libStatGen Software 1
MarkerInfo Class Reference
Collaboration diagram for MarkerInfo:

Public Member Functions

 MarkerInfo (String &string)
 
bool AdjustFrequencies ()
 
String GetAlleleLabel (int allele)
 
int GetAlleleNumber (char label) const
 
int GetAlleleNumber (const String &label) const
 
int NewAllele (char label)
 
int NewAllele (const String &label)
 
void UpdateSerial ()
 
void IndexAlleles ()
 
int CountAlleles ()
 

Static Public Member Functions

static int ComparePosition (MarkerInfo **left, MarkerInfo **right)
 

Public Attributes

int chromosome
 
double position
 
double positionMale
 
double positionFemale
 
Vector freq
 
String name
 
StringArray alleleLabels
 
StringIntHash alleleNumbers
 

Detailed Description

Definition at line 29 of file PedigreeGlobals.h.

Constructor & Destructor Documentation

◆ MarkerInfo()

MarkerInfo::MarkerInfo ( String string)
inline

Definition at line 45 of file PedigreeGlobals.h.

46 {
47 serial = count++;
48 name = string;
49 chromosome = -1;
50 position = 0.0;
51 positionMale = 0.0;
52 positionFemale = 0.0;
53 }

Member Function Documentation

◆ AdjustFrequencies()

bool MarkerInfo::AdjustFrequencies ( )

Definition at line 80 of file PedigreeGlobals.cpp.

81{
82 if (freq.Length() <= 1)
83 {
84 freq.Clear();
85 return false;
86 }
87
88 if (freq.Min() < 0.0)
89 error("Locus %s has negative allele frequencies\n", (const char *) name);
90
91 double sum = freq.Sum();
92
93 if (sum <= 0.0)
94 error("Locus %s frequencies sum to %f, which doesn't make sense\n",
95 (const char *) name, sum);
96
97 if (sum != 1.0)
98 freq *= 1.0 / sum;
99
100 if (fabs(sum - 1.0) > 1.2e-5)
101 {
102 printf("Locus %s frequencies sum to %f, adjusted to 1.0\n",
103 (const char *) name, sum);
104 return true;
105 }
106
107 return false;
108}

◆ ComparePosition()

int MarkerInfo::ComparePosition ( MarkerInfo **  left,
MarkerInfo **  right 
)
static

Definition at line 56 of file PedigreeGlobals.cpp.

57{
58 if ((*left)->chromosome != (*right)->chromosome)
59 return (*left)->chromosome - (*right)->chromosome;
60
61 double difference = (*left)->position - (*right)->position;
62
63 if (difference > 0.0)
64 return 1;
65 else if (difference == 0.0)
66 return (*left)->serial - (*right)->serial;
67 else
68 return -1;
69}

◆ CountAlleles()

int MarkerInfo::CountAlleles ( )
inline

Definition at line 89 of file PedigreeGlobals.h.

90 {
91 return alleleLabels.Length() ? alleleLabels.Length() - 1 : 0;
92 }

◆ GetAlleleLabel()

String MarkerInfo::GetAlleleLabel ( int  allele)

Definition at line 71 of file PedigreeGlobals.cpp.

72{
73 if (alleleLabels.Length() > allele && alleleLabels[allele].Length())
74 return alleleLabels[allele];
75 else if (alleleLabels.Length() <= allele)
76 alleleLabels.Dimension(allele + 1);
77 return alleleLabels[allele] = allele;
78}

◆ GetAlleleNumber() [1/2]

int MarkerInfo::GetAlleleNumber ( char  label) const
inline

Definition at line 60 of file PedigreeGlobals.h.

61 {
62 String labelString;
63 labelString = label;
64 return(GetAlleleNumber(labelString));
65 }

◆ GetAlleleNumber() [2/2]

int MarkerInfo::GetAlleleNumber ( const String label) const
inline

Definition at line 66 of file PedigreeGlobals.h.

67 {
68 return label == "0" ? 0 : alleleNumbers.Integer(label);
69 }

◆ IndexAlleles()

void MarkerInfo::IndexAlleles ( )

Definition at line 110 of file PedigreeGlobals.cpp.

111{
112 if (alleleLabels.Length() >= 255)
113 error("Marker %s has more than 254 distinct alleles\n",
114 (const char *) name);
115
116 alleleNumbers.Clear();
117
118 for (int i = 1; i < alleleLabels.Length(); i++)
119 alleleNumbers.SetInteger(alleleLabels[i], i);
120}

◆ NewAllele() [1/2]

int MarkerInfo::NewAllele ( char  label)
inline

Definition at line 71 of file PedigreeGlobals.h.

72 {
73 String labelString;
74 labelString = label;
75 return(NewAllele(labelString));
76 }

◆ NewAllele() [2/2]

int MarkerInfo::NewAllele ( const String label)

Definition at line 122 of file PedigreeGlobals.cpp.

123{
124 if (alleleLabels.Length() == 0)
125 alleleLabels.Push("");
126
127 if (alleleLabels.Length() >= 255)
128 error("Marker %s has more than 254 distinct alleles\n",
129 (const char *) name);
130
131 alleleNumbers.SetInteger(label, alleleLabels.Length());
132 alleleLabels.Push(label);
133
134 return alleleLabels.Length() - 1;
135}

◆ UpdateSerial()

void MarkerInfo::UpdateSerial ( )
inline

Definition at line 82 of file PedigreeGlobals.h.

83 {
84 serial = count++;
85 }

Member Data Documentation

◆ alleleLabels

StringArray MarkerInfo::alleleLabels

Definition at line 42 of file PedigreeGlobals.h.

◆ alleleNumbers

StringIntHash MarkerInfo::alleleNumbers

Definition at line 43 of file PedigreeGlobals.h.

◆ chromosome

int MarkerInfo::chromosome

Definition at line 33 of file PedigreeGlobals.h.

◆ freq

Vector MarkerInfo::freq

Definition at line 40 of file PedigreeGlobals.h.

◆ name

String MarkerInfo::name

Definition at line 41 of file PedigreeGlobals.h.

◆ position

double MarkerInfo::position

Definition at line 36 of file PedigreeGlobals.h.

◆ positionFemale

double MarkerInfo::positionFemale

Definition at line 38 of file PedigreeGlobals.h.

◆ positionMale

double MarkerInfo::positionMale

Definition at line 37 of file PedigreeGlobals.h.


The documentation for this class was generated from the following files: