NCBI C++ ToolKit
TMgr_LengthStats.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: TMgr_LengthStats.cpp 61993 2014-03-05 22:34:33Z meric $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: .......
27  *
28  * File Description:
29  * .......
30  *
31  * Remark:
32  * This code was originally generated by application DATATOOL
33  * using the following specifications:
34  * 'trackmgr.asn'.
35  */
36 
37 #include <ncbi_pch.hpp>
39 #include <algorithm>
40 
41 
43 BEGIN_objects_SCOPE // namespace ncbi::objects::
44 
45 
47 {
48 }
49 
51 {
52 }
53 
54 void
55 CTMgr_LengthStats::Add(const TSeqPos length, const Uint8 prior_count)
56 {
57  if (prior_count == 0) {
58  SetMin(length);
59  SetMax(length);
60  SetMean(length);
61  }
62  else {
63  SetMin(min(GetMin(), length));
64  SetMax(max(GetMax(), length));
65  // adjust mean by weighted adjustment of current value
66  const TSeqPos curr_mean = GetMean();
67  if (length > curr_mean) {
68  const TSeqPos len_diff = length - curr_mean;
69  SetMean(curr_mean + len_diff / (prior_count + 1));
70  }
71  else {
72  const TSeqPos len_diff = curr_mean - length;
73  SetMean(curr_mean - len_diff / (prior_count + 1));
74  }
75  }
76 }
77 
78 
79 END_objects_SCOPE // namespace ncbi::objects::
81 
User-defined methods of the data storage class.
void Add(TSeqPos length, Uint8 prior_count=0)
unsigned int TSeqPos
Type for sequence locations and lengths.
Definition: ncbimisc.hpp:875
uint64_t Uint8
8-byte (64-bit) unsigned integer
Definition: ncbitype.h:105
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
TMax GetMax(void) const
Get the Max member data.
TMean GetMean(void) const
Get the Mean member data.
TMax & SetMax(void)
Assign a value to Max data member.
TMean & SetMean(void)
Assign a value to Mean data member.
TMin GetMin(void) const
Get the Min member data.
TMin & SetMin(void)
Assign a value to Min data member.
T max(T x_, T y_)
T min(T x_, T y_)
Modified on Fri Sep 20 14:58:19 2024 by modify_doxy.py rev. 669887