Description de la distribution WPC pour Gaw10 Repertoire Alpha : Makefile main.c file.c file.h /* gestion des entrees sorties */ Repertoire Tree : family.c family.h /* gestion des traitements par famille */ member.c member.h /* gestion de chaque individu */ parser.l /* fichier d'analyseur lexical */ parser_family.y /* fichier de description du fichier des familles */ parser_gen.y /* fichier de description du fichier de genotype */ list.c list.h /* contient la gestion generique des listes */ generic.h parser.h parser_family.tab.h /* fichier generes automatiquement par les */ parser_family.tab.c /* analyseurs lexicaux et syntaxiques a partir */ parser_gen.tab.h /* des fichiers .l etr .y */ parser_gen.tab.c lex.family.c lex.gen.c Repertoire Sun_Objects : l'ensemble des fichiers.o ============================================================== Utilisation du parser : --------------------- Les fichiers de description sont lus automatiquement grace a des parsers. Le makefile declare flex et bison comme outils si vous n'en disposez pas vous pouvez les remplacer par lex et yacc dans ce Makefile. Si vous ne modifiez pas la description des fichiers, il n'est pas necessaire de regenerer les analyses, vous pouvez utiliser directement les fichiers parser_family.tab.c et parser_gen.tab.c qui sont les fichiers en langage C generes automatiquement par flex et bison. La definition des caracteres reconnus est donnee dans parser.l La definition du fichier des familles est donne dans parser_family.y au moyen d'une grammaire, celle du fichier de genotype est donne dans parser_gen.y Si le fichier fournit en entree ne correspond pas a la definition, la gestion d'erreur tente de vous indiquer a quelle ligne s'est produite l'erreur. Attention, dans le fichier de description des familles le changement de famille doit etre precede du mot FAMILLE ecrit rigoureusement de cette facon. Vous pourrez trouver un fichier type de description des familles et des genotypes dans le repertoire Alpha. Il s'agit du fichier family et du fichier genotypes. Ces deux noms de fichiers sont les noms par defaut, pour donner d'autres noms il suffit de les passer en parametres a la commande wpc. Exemple : > wpc provoque l'execution du programme avec les noms de fichiers par defaut sur 1 marqueur > wpc 10 my_family my_genotype provoque l'execution du programme avec les fichiers cites sur 10 marqueurs. ============================================================== Description des Donnees : ----------------------- Le nombre de familles et de membres dans chaque famille n'est pas limite (sauf par les capacites de la machine). Il peut n'y avoir qu'une famille dans le fichier. Apres le mot FAMILLE on trouve le nom de la famille et le nombre de membres, ensuite on trouve la liste des membres jusqu'a la prochaine occurence du mot FAMILLE. Le nombre de marqueurs a analyser peut egalement etre 1 a n. Par defaut, il est de 1. Dans le cas contraire il faut le specifier dans la ligne de commande(cf exemple ci-dessus). Le fichier fourni en exemple contient 47 marqueurs. Les resultats sont affichies a l'ecran et dans un fichier qui s'appelle results. NB: si vous n'utilisez pas les noms de fichiers par defaut il faudra obligatoirement donner le nombre de marqueurs. Vous pouvez bien evidemment changer tout cela dans le fichier main.c ============================================================== Cas traite : ---------- Tout membre de la famille qui n'a pas de parent identifie est considere comme fondateur. Un fondateur est une personne pour qui il n'y aura pas de simulation de transmission de gene puisque celle-ci est effetuee a partir des parents. Ce sont les propres genes du fondateur qui valueront le champs reserve au gene simule. Il est admis que les parents sont toujours decrits dans le fichier avant leurs enfants. Dans une fraterie, tous les membres ont les 2 memes parents (le cas des demi-freres ou soeurs n'est pas traite). ============================================================== Description sommaire du Programme : --------------------------------- A la lecture du fichier de description des familles, on cree une liste des familles appartenant au fichier. Pour chaque famille, il existe une liste des membres(list_of_member). Si ces membres sont fondateurs de leur famille, ils appartiennent egalement a la liste des fondateurs. Il existe aussi par famille une liste des couples (list_of_pair) qui infere le traitement de simulation. A la lecture du fichier de description des genotypes, les informations sur les marqueurs sont ajoutes dans la structure member. On admet que tous les membres ont ete cites dans le fichier precedent. Toute erreur survenue pendant les differentes lectures provoque la terminaison immediate du programme. L'ensemble des traitements s'effectue a partir des differentes listes. On infere un traitement sur la liste des familles tant qu'il y a des familles, pour une famille sur la liste des membres ou des fondateurs tant qu'il y a des membres ou des fondateurs. Le traitement commence avec la fonction compute du fichier file.c qui itere sur le nombre de marqueurs a traiter. Pour un marqueur, on appelle pour chaque famille le traitememnt : apply_to_all(list_of_families,compute_statistic); Lorsque le traitement pour un marqueur est termine, print_result imprime les resultat pour ce marqueur. La fonction compute_statistic du fichier family.c itere un traitement par famille et gere le nombre de simulation pour une famille. Le fichier member.c contient l'ensemble des fonctions de traitement pour un membre de la famille, y compris la gestion des fondateurs et des couples. Le champs residus de la structure member contient la variable quantitative que l'on desire analyser, dans cette version le calcul est realise avec la variable Q1. Cette operation se trouve dans la fonction add_member. Si on desire introduire un calcul pour cette variable, il suffit d'introduire l'appel de la fonction a cet endroit et de valuer avec le resultat le champs residus. Les fichiers generic.h list.h et list.c sont des fichiers qui contienent les definitions et les fonctions generiques utilisees dans les differents traitements.