TBioAbstract
______________TBioAbstract(TObject)____________________________________________ constructor create(const aName:String); destructor destroy(); {** Nettoie l'objet, le vide de manière à ce qu'il soit réutilisable } procedure clear(); {** Accés au nom, identifiant d'un ensemble, d'un individu, d'un locus... Ecrase longName. } property name:String; {** Nom développé } property longName:String; {** Commentaire associé } property comment:String; ______________TLocus(TBioAbstract)_____________________________________________ {** @param aName nom et indentifiant du locus. @param aNbAlleles nombre d'allèles pré-alloués (5 par défaut) } constructor create(const aName:String; const aNbAlleles:IndexAllele=5); {** @return l'indice de l'allèle de ce nom } function indexOfAllele(const nameAllele:String):IndexAllele; {** @return le nombre d'allèles différents recencés sur ce locus } property nbAlleles:IndexAllele; {** accés à l'allèle num } property alleles[const num:IndexAllele]:PAllele; default; {** @return l'allèle à la position num par ordre alphabétique } property allelesSorted[const num:IndexAllele]:PAllele; {** @return l'index non trié de l'allèle à la position num par ordre alphabétique } property allelesSortedIndex[const num:IndexAllele]:IndexAllele; {** @return l'allèle de ce nom, nil s'il n'existe pas } property allelesNamed[const nameAllele:String]:PAllele; {** Accés au type TLocusTypede locus:microsatellite, cytoplasmique } property locusType:TLocusType; {** Déclare un nouvel allèle aprés vérification de sa présence } function declareAlleleGlobal(const nameAllele:String; const aLength:Integer=0; const aSequence:String=''):Integer; ______________TBioCalculable(TBioAbstract)_____________________________________ {** @param aName nom et indentifiant. @param nbLocus nombre de locus pré-alloués (15 par défaut) } constructor create(const aName:String; const nbLocus:IndexLocus=15); {** Nom de l'échantillon, précédé de l'arborescence des échantillons pères. } property treeName:String; {** @return si le Compute Data a déjà été appelé sur cet objet } property isComputed:Boolean; {** Accés au nombre de locus utilisés.} property nbLocus:IndexLocus; {** @return le nombre d'allèles trouvés sur les individus de cet ensemble pour ce locus } property nbAlleles[const numLocus:IndexLocus]:IndexAllele; {** @return la fréquence de l'allèle dont on connaît le numéro sur ce Locus. } property freqAllele[const numLocus:IndexLocus; const numAllele:IndexAllele]:Extended; {** @return la fréquence de l'allèle dont on connaît la référence générale sur ce Locus. } property freqAlleleRef[const numLocus:IndexLocus; const refAllele:IndexAllele]:Extended; {** @return le nombre d'occurrences de l'allèle dont on connaît la référence générale sur ce Locus } property nbGenesRef[const numLocus:IndexLocus; const refAllele:IndexAllele]:Integer; {** @return le nombre de génotypages non nuls faits sur ce locus, soit la somme des nbGenes de chaque allèles de ce locus } property nbGenesTotal[const numLocus:IndexLocus]:Integer; {** @return le nombre d'individus de cet ensemble. } property nbIndividuals:Integer; {** @return la proportion d'individus hétérozygotes dans cet ensemble. } property heterozygotesProportion[const numLocus:IndexLocus]:Extended; {** @return la diversité génétique des individus de cet ensemble } property geneDiversity[const numLocus:IndexLocus]:Extended; {** Précalcule un certain nombre de propriétés comme la fréquence allélique. @param hasIndiduals =True si les individus de la structure existent réellement (génotypes); =False si on a seulement le nombre de gènes (permettant de calculer les fréquences alléliques) } procedure computeData(const hasIndiduals:Boolean=True); ______________TIndividual(TBioCalculable)______________________________________ {** @param aName nom et indentifiant de l'individu. @param nbLocus nombre de locus @param aPloidy nombre de gènes pré-alloués par typage } constructor create(const aName:String; const nbLocus:IndexLocus; const aPloidy:Integer=2); {** Accés au nombre de gènes du locus numLocus } property nbGenes[const numLocus:IndexLocus]:IndexAllele; {** @return la référence de l'allèle du locus numLocus sur le gène numPloid; -1 s'il est inconnu. } property typages[const numLocus:IndexLocus; const numPloid:IndexAllele]:IndexAllele; {** Accés aux coordonnées spatiales de prélèvement de l'individu } property coordinates:R3DPoint; {** Accés au numéro de génération de l'individu } property generation:Integer; {** Ajout le gène de référence allélique refGene sur le locus numLocus } procedure addGene(const numLocus:IndexLocus; const refGene:IndexAllele); {** Accés à la ploïdie de cet individu pour le locus numLocus } property ploidy[const numLocus:IndexLocus]:Byte; {** @return trVrai si l'individu est homozygote, trFaux si hétérozygote, trBlanc sinon } function isHomozygote(const numLocus:IndexLocus):TTrilean; ______________TGroupAbstract(TBioCalculable)___________________________________ constructor create(const aName:String; const nbLocus:IndexLocus=15; const nbIndividuals:Integer=5); {** Ne détruit pas les individus de fVectorIndividuals } destructor destroy(); {** Vide le tableau des individus. Libère les individus ssi freeIndividuals=True } procedure clear(const freeIndividuals:Boolean); {** @return si ce TGroupAbstract est une population. Dans une arborescence de TGroupAbstract, revient à tester si cet objet est une feuille(True) ou un noeud(False) } function isSample():Boolean; {** Accés au tableau fVectorIndividuals des individus regroupés dans ce groupe } property allIndividuals:TVectorIndividuals; ______________TGroup(TGroupAbstract)___________________________________________ {** @param aName nom et indentifiant du groupe. @param nbLocus nombre de locus @param nbSubGroups nombre de sous-groupes } constructor create(const aName:String; const nbLocus:Integer=15; const nbSubGroups:Integer=5); {** @return False. Dans une arborescence de TGroupAbstract, un TGroup n'est jamais une feuille TSample } function isSample():Boolean; {** Détruit les sous-groupes. idem clear(True) } procedure clear(); {** Nettoie fVectorGroups. Détruit les sous-groupes si freeSubGroups=True } procedure clear(const freeSubGroups:Boolean); {** Accés à la sous-arborescence de ce groupe } property groups:TVectorGroups; ______________TSample(TGroupAbstract)__________________________________________ {** @return True. Dans une arborescence de TGroupAbstract, un TSample est toujours une feuille } function isSample():Boolean; {** recopie avec un individu en moins; Penser à libérer le TSample retourné } function copyLess(const numIndividual:Integer):TSample; {** Ajoute cet allèle s'il n'est pas déjà présent dans fLocusAlleles, incrémente son nombre d'occurences, et retourne sa référence. @param numLocus N° du locus @param aRefAllele Référence de l'allèle @param incrementation Valeur d'incrémentation du nombre de gènes de cet allèle } function declareAllele(const numLocus:IndexLocus; const aRefAllele:IndexAllele; const incrementation:Integer):Integer; |