13 février 2007 – Modification de SganArrayL

By xtof78000

SganArrayL est un Programme d’enregistrement, de normalisation et d’analyse des puces. il permet d’afficher des Graphes de représentation des résultats de compilation ainsi que les log2log.

http://berthemorisot.gim.pasteur.fr/cgi-bin/chip/array.pl

Le programme a été écrit par Florence. il est écrit en perl et interface avec une base de données postgresql (luce_la_puce).

le programme permet actuellement de traiter des données d’hybridation effectuées avec 2 marqueurs (Cy3 et Cy5). l’analyse d’une hybridation consiste en l’ajout des données brutes d’une hybridation à la base de données, en récupérant les méta données qui vont bien.
ensuite une partie des données est éliminée si elles sont annotées comme fausses manquantes ou autre. les données sont alors normalisées en utilisant la méthode loess http://www.itl.nist.gov/div898/handbook/pmd/section1/pmd144.htm sur le log du ratio cy5/cy3 en fn de la moyenne des log des intensités.
les pics sont ensuite éliminés puis les données sont normalisées entre les différentes lame.
Plusieurs modifications sont à apporter à ce programme. tout d’abord il doit supporter la prise en charge d’analyse en 3 couleurs (cy3_532, cy5_635, alexa_594) et non plus seulement 2 couleurs. ensuite, la gestion et l’organisation de la base de données sont a revoir. enfin refaire le programme en python plutot que perl. bien que plus lent, python a l’avantage de mieux gérer les objets et de permettre une programmation modulaire et facilement adpatable a d’autres changements.

I- création d’un parser python pour les fichiers gpr.
utilisation des classes abstraites liste et item dans tools.
description du fichier gpr :
fichier mal foutu
commence par 2 lignes d’info sans aucun signet en début de ligne

ATF 1.0
29 53
puis une série de méta-données

"Type=GenePix Results 3"
"DateTime=2007/12/14 16:50:02"
"Settings=F:\users\Laurence\lames de verre\20071214\13564248_20071214.gps"
"GalFile=F:\users\Laurence\barcode12k_v2final.gal"
"PixelSize=10"
"Wavelengths=635 532"
"ImageFiles=F:\users\Laurence\lames de verre\20071214\13564248_20071214.tif 2
F:\users\Laurence\lames de verre\20071214\13564248_20071214.tif 3"
"NormalizationMethod=None"
"NormalizationFactors=1 1"
"JpegImage="
"StdDev=Type 1"
"RatioFormulations=W1/W2 (635/532)"
"FeatureType=Circular"
"Barcode="
"BackgroundSubtraction=LocalFeature"
"ImageOrigin=1480, 5360"
"JpegOrigin=0, 0"
"Creator=GenePix Pro 5.0.0.49"
"Scanner=GenePix 4000A [55472]"
"FocusPosition=0"
"Temperature=36.82"
"LinesAveraged=2"
"Comment="
"PMTGain=610 520"
"ScanPower=100 100"
"LaserPower=2.42 2.17"
"Filters= "
"ScanRegion=148,536,1968,5952"
"Supplier="

puis la ligne des en-têtes de colonne
"Block" "Column" "Row" "Name" "ID" "X" "Y" "Dia." "F635 Median" "F635 Mean" "F635 SD" "B635" "B635 Median" "B635 Mean"
"B635 SD" "% > B635+1SD" "% > B635+2SD" "F635 % Sat." "F532 Median"
"F532 Mean" "F532 SD" "B532" "B532 Median" "B532 Mean" "B532 SD" "% > B532+1SD" "% > B532+2SD" "F532 % Sat." "Ratio of Medians (635/532)" "Ratio of Means (635/532)" "Median of Ratios (635/532)" "Mean of Ratios (635/532)" "Ratios SD (635/532)" "Rgn Ratio (635/532)" "Rgn R (635/532)" "F Pixels" "B Pixels" "Circularity" "Sum of Medians (635/532)" "Sum of Means (635/532)" "Log Ratio (635/532)" "F635 Median - B635" "F532 Median - B532" "F635 Mean - B635" "F532 Mean - B532" "F635 Total Intensity" "F532 Total Intensity" "SNR 635" "SNR 532" "Flags" "Normalize" "Autoflag" "Sequence"

les en-têtes comme les meat-données commencent par un guillemet, il faut donc utiliser un autre marqueur pour les distinguer. les méta-données possèdent toutes un signe”=” dans la ligne. a prioti il n’y a pas d’autre signe “=” dans le reste du fichier.

en dessous de la ligne du header viennent les données

1 1 1 "PFS1" "YHR185C-D-R" 1800 5740 110 275 1125 1804 32 32 35 14 100 100 0 344 1226 1887 97 97 99 19 100 97 0 0.984 0.968 0.980 1.035 1.748 0.955 0.891 80 548 100 490 2222 -0.024 243 247 1093 1129 89966 98110 77.857 59.316 0 0 0 AGAGATCCACTTCCCATAATT
1 2 1 "PFS1" "YHR185C-D-R" 1980 5740 110 306 1309 1920 33 33 37 18 100 100 0 406 1443 2095 100 100 101 19 100 98 0 0.892 0.950 0.943 1.006 1.693 0.919 0.896 80 504 100 579 2619 -0.165 273 306 1276 1343 104731 115403 70.667 70.632 0 0 0 AGAGATCCACTTCCCATAATT

ce sont majoritairement des données numériques. cependant les données vont être ajouter dans la base immédiatement ou presque. les calcul ne se feront pas dessus, il ne sera peut-etre pas necessaire de rechercher le bon format des données en les parsant.
en cherchant a utiliser les classes abstraites item_list et item, j’ai rencontré un pb. la classe item_list parse les fichier tabulé simple, sans en-tete. il faudrait, pour bien faire modifier item_list pour prendre en compte les info sur le format du fichier a parser
la bonne méthode consisterait a créer un objet parser ayant des attributs decrivant le fichier a parser. a tester demain.

Laisser un commentaire