18 #ifndef __PEDALLELES_H__ 19 #define __PEDALLELES_H__ 34 char & operator [](
int i)
36 return (i == 1) ? one : two;
42 return (one * two) != 0;
46 return isKnown() && (one != two);
50 return isKnown() && (one == two);
54 return (one == a) || (two == a);
58 bool isHeterozygousFor(
int a)
60 return isHeterozygous() && hasAllele(a);
62 bool isHomozygousFor(
int a)
64 return !(isHeterozygousFor(a));
68 int countAlleles(
int a)
70 return ((one == a) ? 1 : 0) + ((two == a) ? 1 : 0);
74 int otherAllele(
int a)
76 return ((one == a) ? two : one);
82 return ((al.one == one) && (al.two == two)) ||
83 ((al.two == one) && (al.one == two));
89 return (one == al.one) ?
90 ((two == al.two) ? 2 : 1) :
92 ((two == al.one) ? 2 : 1) :
93 (((two == al.one) || (two == al.two)) ? 1 : 0));
98 return identicalTo(rhs);
100 int operator != (
Alleles & rhs)
102 return !identicalTo(rhs);
107 return one > two ? one : two;
111 return one > two ? two : one;
116 return isKnown() ? Hi() *(Hi() - 1) / 2 + Lo() : 0;
119 longint BinaryCoded()
129 return allele1 | allele2;
137 char a1 = Lo(), a2 = Hi();
138 char b1 = geno.Lo(), b2 = geno.Hi();
140 if (a1 == b1 && a2 == b2)
142 if (a1 == b1 || a1 == b2)
144 else if (a2 == b1 || a2 == b2)
150 void Intersect(
char allele)
152 if (one != allele && two != allele)
158 bool AddAllele(
char allele)
160 if (one == allele || two == allele)
163 if (one != 0 && two != 0)
166 if (one == 0) one = allele;