Archive de la catégorie «gal»

29 avril 2008 – interface sganarrayl

avril 29, 2008

11h24 :
Pour faire l’interface d’ajout du fichier gal, j’ai voulu reprendre celle d’ajout du fichier gff.
celle-ci étant assez moyenne, j’ai donc décidé de la reprendre.
pour que ce soit cohérent avec l’interface finale de sganarrayl, il faut deja pensé a l’intégralité de l’interface.
Depuis la page d’accueil pour ajouter des puce, on pourra donc voir la liste des puces disponibles et aussi du fichier de définition des features utilisé.
on pourra depuis cette page aussi ajouter de nouveaux fichiers de puce et de feature.
l’ajout de feature va renvoyer sur la page add_gff.php
cette page propose un champ browse pour parcourir le disque local et ajouter un fichier.
l’envoie du formulaire va renvoyer sur la meme page.
cette fois ci, comme il y a un fichier uploader, ca va déclencher le script php.
celui-ci copie le fichier uploadé dans un répertoire spécifique.
il va aussi modifier la page pour faire apparaitre le nom du fichier traité et faire disparaitre le champs browse.
la page va aussi avoir un script javascript (add_gff.js).
celui-ci va se déclencher s’il y a un nom de fichier a traiter.
dans ce cas il va faire appelle au script add_gff.py pour traiter le fichier gff et renvoyer la réponse qui correspond au traitement et l’afficher.
add_gff.py parse le fichier gff à l’aide des du parser gff de parser_tools puis utilise la classe garden_state du module sganarrayl_interface pour se connecter à la base luce_la_puce et ajouter les feature par la méthode add_feature_data.

add_gff.py renvoie un fichier xml avec les balises ou selon le déroulement du code.
le script javascript va interpréter ce xml et afficher les messages correspondants dans une balise prévue a cette effet et ingénieusement intitulée gff
voici le flux de données


L’interface pour le fichier gff fonctionne bien maintenant et le code est propre.
passons au fichier gal

déroulement de la séquence.
l’utilisateur doit ajouter une puce dans la base.
il va alors aller sur la page add_gal.php.
il n’y a que 2 champs pour le moment.
le premier pour donner un nom à la puce.
le 2eme pour mettre le fichier gal qui contiendra les info sur les spots.
le nom de la puce sera celui utilisé par la suite pour faire référence à celle-ci.
le script va ensuite ajouter le nom de la puce dans la table array_chip_types s’il n’existe pas encore. s’il existe deja, l’ajout de la puce est refusé. par la suite il devra permettre la mise a jour de la puce.
ensuite il faut parcourir chaque spot, déterminer son type, vérifier dans la table array_spot_type si le type existe et sinon l’ajouter. on recherche ensuite dans les features de la table bank_orf qui ont la meme annotation que le spot.
si on trouve on garde la ref de la feature, sinon, la ref est nulle. on ajoute ensuite les info du spot dans la table array_spots, en ajoutant les liaisons vers les tables array_chip_types array_spot_type et bank_orf.

todo -> modifier sganarrayl_interface pour pouvoir sélectionner les id des orf ayant l’annotation du spot

15 avril 2008 – Parser pour le fichier gal

avril 15, 2008

11h04
maintenant que le parser global est construit, je vais faire un parser pour le fichier gal dérivé de celui-ci
Format d’un fichier GAL -> GenePix Array List
exemple du fichier /home/gim2/bioinfo/microarray/barcode12k_v2final.gal
la commande
less /home/gim2/bioinfo/microarray/barcode12k_v2final.gal
donne
ATF 1
51 6
Type=GenePix ArrayList V1.0
BlockCount=48
BlockType=0
"Block1= 3530, 8000, 120, 24, 180, 24, 180"
"Block2= 8030, 8000, 120, 24, 180, 24, 180"
"Block3= 12530, 8000, 120, 24, 180, 24, 180"
"Block4= 17030, 8000, 120, 24, 180, 24, 180"
"Block5= 3530, 12500, 120, 24, 180, 24, 180"
"Block6= 8030, 12500, 120, 24, 180, 24, 180"
"Block7= 12530, 12500, 120, 24, 180, 24, 180"
"Block8= 17030, 12500, 120, 24, 180, 24, 180"
"Block9= 3530, 17000, 120, 24, 180, 24, 180"
"Block10= 8030, 17000, 120, 24, 180, 24, 180"
"Block11= 12530, 17000, 120, 24, 180, 24, 180"
"Block12= 17030, 17000, 120, 24, 180, 24, 180"
"Block13= 3530, 21500, 120, 24, 180, 24, 180"
"Block14= 8030, 21500, 120, 24, 180, 24, 180"
"Block15= 12530, 21500, 120, 24, 180, 24, 180"
"Block16= 17030, 21500, 120, 24, 180, 24, 180"
"Block17= 3530, 26000, 120, 24, 180, 24, 180"
"Block18= 8030, 26000, 120, 24, 180, 24, 180"
"Block19= 12530, 26000, 120, 24, 180, 24, 180"
"Block20= 17030, 26000, 120, 24, 180, 24, 180"
"Block21= 3530, 30500, 120, 24, 180, 24, 180"
"Block22= 8030, 30500, 120, 24, 180, 24, 180"
"Block23= 12530, 30500, 120, 24, 180, 24, 180"
"Block24= 17030, 30500, 120, 24, 180, 24, 180"
"Block25= 3530, 35000, 120, 24, 180, 24, 180"
"Block26= 8030, 35000, 120, 24, 180, 24, 180"
"Block27= 12530, 35000, 120, 24, 180, 24, 180"
"Block28= 17030, 35000, 120, 24, 180, 24, 180"
"Block29= 3530, 39500, 120, 24, 180, 24, 180"
"Block30= 8030, 39500, 120, 24, 180, 24, 180"
"Block31= 12530, 39500, 120, 24, 180, 24, 180"
"Block32= 17030, 39500, 120, 24, 180, 24, 180"
"Block33= 3530, 44000, 120, 24, 180, 24, 180"
"Block34= 8030, 44000, 120, 24, 180, 24, 180"
"Block35= 12530, 44000, 120, 24, 180, 24, 180"
"Block36= 17030, 44000, 120, 24, 180, 24, 180"
"Block37= 3530, 48500, 120, 24, 180, 24, 180"
"Block38= 8030, 48500, 120, 24, 180, 24, 180"
"Block39= 12530, 48500, 120, 24, 180, 24, 180"
"Block40= 17030, 48500, 120, 24, 180, 24, 180"
"Block41= 3530, 53000, 120, 24, 180, 24, 180"
"Block42= 8030, 53000, 120, 24, 180, 24, 180"
"Block43= 12530, 53000, 120, 24, 180, 24, 180"
"Block44= 17030, 53000, 120, 24, 180, 24, 180"
"Block45= 3530, 57500, 120, 24, 180, 24, 180"
"Block46= 8030, 57500, 120, 24, 180, 24, 180"
"Block47= 12530, 57500, 120, 24, 180, 24, 180"
"Block48= 17030, 57500, 120, 24, 180, 24, 180"
Block Column Row ID Name Sequence
1 1 1 YHR185C-D-R PFS1 AGAGATCCACTTCCCATAATT
1 2 1 YHR185C-D-R PFS1 AGAGATCCACTTCCCATAATT
1 3 1 YIR043C-D CTGCACATTCGATTACAGCG
1 4 1 YIR043C-D CTGCACATTCGATTACAGCG
1 5 1 YHR067W-D RMD12 TTATGCACCGTGACGAGGCT
1 6 1 YHR067W-D RMD12 TTATGCACCGTGACGAGGCT
1 7 1 YBR296C-U PHO89 CACGACCGACAATATGGTGA
1 8 1 YBR296C-U PHO89 CACGACCGACAATATGGTGA
1 9 1 YOL076W-U MDM2 ACGGATGGATCAGTTGCTAT
1 10 1 YOL076W-U MDM2 ACGGATGGATCAGTTGCTAT
1 11 1 YNL204C-U SPS18 GCGCTGGCACAAGAATACCA
1 12 1 YNL204C-U SPS18 GCGCTGGCACAAGAATACCA
1 13 1 YLR205C-U HMX1 AACTGAACATACCCGGTGAC
1 14 1 YLR205C-U HMX1 AACTGAACATACCCGGTGAC
1 15 1 YJL039C-D NUP192 TTGAGCCCGATCAGTCGATG
1 16 1 YJL039C-D NUP192 TTGAGCCCGATCAGTCGATG
1 17 1 YGR029W-D ERV1 TTACGTCCCGGATGCCGTTT
1 18 1 YGR029W-D ERV1 TTACGTCCCGGATGCCGTTT
1 19 1 YEL072W-D RMD6 TGCAGCACGCAAGACCATGA
1 20 1 YEL072W-D RMD6 TGCAGCACGCAAGACCATGA
1 21 1 YDR022C-D CIS1 GGTCGATAATAACACGCCAC
1 22 1 YDR022C-D CIS1 GGTCGATAATAACACGCCAC
1 23 1 YBL086C-U ACCACTCACTAAGGAGGATC
1 24 1 YBL086C-U ACCACTCACTAAGGAGGATC
1 1 2 YLR327C-D-R GATAACGACTCAGTGC
1 2 2 YLR327C-D-R GATAACGACTCAGTGC
1 3 2 YIL033C-D BCY1 GGATATTAGCCATCTACGTG

description des différentes parties
le fichier est spéraré en 3 parties
les 2 première ligne donne des info sur la structure du fichier
il y a ensuite le header du fichier
puis les données
1ere ligne -> ATF : conforme au format Axon Text File
1 : version du format
2eme ligne -> 51 : nombre de ligne dans le header
6 : nombre de colonne dans les données
3éme à 53 ème ligne ->header
Type=GenePix ArrayList V1.0 -> type du fichier
BlockCount=48 -> nombre de block
BlockType=0 ->Type de block decrit :
0 = rectangulaire.
1 = orange-packing #1.
2 = orange-packing #2.
“Block1= 3530, 8000, 120, 24, 180, 24, 180″ ->position et dimension de chaque block
xOrigin : position x du centre de la feature la plus en haut a gauche
yOrigin : position y du centre de la feature la plus en haut a gauche
FeatureDiameter : Diamètre des features du block
xFeature : Nombre de colonnes de features dans le block
xSpacing : espacement des colonnes
yFeature : Nombre de lignes de features dans le block
ySpacing : espacement des lignes
54eme ligne -> ligne de titre des colonnes
55eme ligne a la fin -> information pour chaque features

Le parser doit donc spécifiquement
lire la première ligne et stocker le format de fichier et sa valeur
lire la 2eme ligne et stocker le nb de ligne de header et le nb de colonne (pas vraimenet utile)
lire toute les ligne du header, les parser pour séparer la clé des données
(possible de rajouter un mini parser pour les données de block)
puis lire les données.
je vais donc faire un parser héritant de la classe Items.
je vais surclasser parse_header pour traiter les 1ere ligne et le header
puis parser le rester par les méthodes de Items.

le code du parser


class Gal_parser(Items):'''Gal_parserparser for *.gal filesx = Gal_parser(**arg)options :file_arg -> file path or file handleitem_list -> list of item instances

'''

def __init__(self, **arg):'''x = Gal_parser(**arg)'''#call the init method of ItemsItems.__init__(self, **arg)

def parse_header(self, fhin):'''x.parse_header(fhin)fhin -> fileparse the header of the file.

'''#get the format of the file (1st line of the file)file_format = fhin.readline()#check if it's a ATF fileif not "ATF" in file_format :    raise FormatError("%s format is not correct" % fhin.name)#store the file_format dataself.file_format=split(file_format, '\t')

#get the file structure data (2nd line of the file)try :    self.nb_header_rows, self.nb_cols=split(fhin.readline(), '\t')except ValueError :    self.nb_header_rows = fhin.readline()

self.nb_header_rows = int(self.nb_header_rows)

#create the structure for the headerself.header={}#get all the header lines and parse themfor i in range(self.nb_header_rows) :    try :        k,v = self.parse_header_line(fhin.readline())    except AttributeError :        continue    except ValueError :        continue    self.header[k] = v#set the parse_header flag to true, so it won't be parsed again laterself.flag['parse_header'] = True

def parse_header_line(self, line):'''k,v = x.parse_header_line(line)clean the line and split the key and the value'''#cleaning of the linetry :    #remove backspace    line = remove_end_line(line)    #remove "    line=replace(line,'"', '')    #remove tab    line=replace(line,'\t', '')

except AttributeError :    print "no replace for %s" % line    raise#split the line with the field separator =#and return the resulting tuple ok key/valuetry :    return split(line,"=")except ValueError :    print "no = in %s" % line    raise

def get_header(self, *arg):'''header = x.get_header(*arg)return the header dictionnaryarg ->    keys : return keys of header    values : return values of header    items : return tuple ok key/value of header'''#check the arg optionif 'keys' in arg : return self.header.keys()if 'values' in arg : return self.header.values()if 'items' in arg : return self.header.items()#if no optionreturn self.header

class FormatError(exceptions.Exception):def __init__(self, msg=''):self.errmsg = msg

def __str__(self):return self.errmsg

j’ai ajouté un classe FormatError pour gérer les erreur de format de fichier.
j’ai modifié la fonction de test

def test_gal_parser(self):'''test si l'heritage fonctionne bien'''file_format="ATF"file_format_version = 1header_row_nb = 2data_col_nb = 3header_key_1 = "key1"header_val_1 = "val1"header_key_2 = "key2"header_val_2 = "val2"col_1 = "col_1"col_2 = "col_2"col_3 = "col_3"data_l1_c1 = "data_l1_c1"data_l1_c2 = "data_l1_c2"data_l2_c1 = "data_l2_c1"data_l2_c2 = "data_l2_c2"data_l2_c3 = "data_c3"data_l1_c3 = "data_c3"test_file='''%s\t%s%s\t%s%s=%s"%s=%s"%s\t%s\t%s%s\t%s\t%s%s\t%s\t%s''' % (file_format, file_format_version,header_row_nb, data_col_nb,header_key_1, header_val_1,header_key_2, header_val_2,col_1, col_2, col_3,data_l1_c1, data_l1_c2, data_l1_c3,data_l2_c1, data_l2_c2, data_l2_c3)self.write_tmp_file(filetext = test_file)test_gal = Gal_parser(file_arg = 'tmp_file')self.assert_(isinstance(test_gal,Gal_parser))self.assert_(len(test_gal.get_header())==2)

self.assert_(test_gal.get_header('keys')==[header_key_2, header_key_1])self.assert_(test_gal.get_header('values')==[header_val_2, header_val_1])self.assert_(len(test_gal)==2)self.assert_(test_gal[0].get_attribute(col_1)==data_l1_c1)

file_format="ATG"test_file='''%s\t%s%s\t%s%s=%s"%s=%s"%s\t%s\t%s%s\t%s\t%s%s\t%s\t%s''' % (file_format, file_format_version,header_row_nb, data_col_nb,header_key_1, header_val_1,header_key_2, header_val_2,col_1, col_2, col_3,data_l1_c1, data_l1_c2, data_l1_c3,data_l2_c1, data_l2_c2, data_l2_c3)self.write_tmp_file(filetext = test_file)self.assertRaises(FormatError, Gal_parser, filename = 'tmp_file')

remove('tmp_file')

test_gal = Gal_parser(file_arg = '/home/gim2/bioinfo/microarray/barcode12k_v2final.gal');self.assert_(isinstance(test_gal,Gal_parser))self.assert_(len(test_gal.get_header())==51)

et le test me renvoie

tmp_file format is not correct.col_0 is not a valide attribute....the argument is not a regular file objectfile toto doesn't existpermission denied for file tmp_parse.txt..----------------------------------------------------------------------Ran 7 tests in 2.844s

OK

j’ai donc un parser de fichier gal qui fonctionne bien.
quel est le but de tout ca ?
l’idée est de parser le fichier de description de la puce et de mettre les infos dans la base de donnée. je cherche également a liéer les spot aux orf du genome de la levure.
j’ai précédemment examiné le fichier gal et d’autre fichiers décrivant les puces (12 mars, 13 mars (1) et 13 mars (2)
l’analyse de ces fichier a permis de constater que l’annotation de certain spot ne coorespond plus a une orf existante. mais que cette ancienne annotation est généralement toujours présente dans les alias des orf.
l’analyse plus fine de cela a meme permis de déterminer que seule 7 annotations avaient réellement totalement disparues.
YAR037W YAR040C YAR043C YCL006C YCL013W YCL026C YCL053C
ce qui correspond a 30 spot au total
grep YCL053C ~/bioinfo/microarray/barcode12k_v2final.gal
1 23 19 YCL053C-U CTATTGTTGAAATGCCGGGA
1 24 19 YCL053C-U CTATTGTTGAAATGCCGGGA
39 23 20 YCL053C-D CATAGTCGAGAACCGGAGAC
39 24 20 YCL053C-D CATAGTCGAGAACCGGAGAC

grep YAR043C ~/bioinfo/microarray/barcode12k_v2final.gal
34 3 8 YAR043C-U ATTCTAGCGGCAGATCCGTG
34 4 8 YAR043C-U ATTCTAGCGGCAGATCCGTG

grep YCL013W ~/bioinfo/microarray/barcode12k_v2final.gal
13 23 22 YCL013W-D CGCTCGAACATAATTGGGTA
13 24 22 YCL013W-D CGCTCGAACATAATTGGGTA
25 23 22 YCL013W-U CCTGTCAGTAAACCGAGAGA
25 24 22 YCL013W-U CCTGTCAGTAAACCGAGAGA

grep YCL026C ~/bioinfo/microarray/barcode12k_v2final.gal
5 23 21 YCL026C-D CCTCCGAACAGAGAGTCTTA
5 24 21 YCL026C-D CCTCCGAACAGAGAGTCTTA
13 3 4 YCL026C-A-U FRM2 GCTCACCGAACATCAGATTA
13 4 4 YCL026C-A-U FRM2 GCTCACCGAACATCAGATTA
17 3 21 YCL026C-U-R CCTCTGCTAAGTAGTAGA
17 4 21 YCL026C-U-R CCTCTGCTAAGTAGTAGA
17 23 21 YCL026C-U CCCTCTGCTAAAGTAGTAGA
17 24 21 YCL026C-U CCCTCTGCTAAAGTAGTAGA
42 5 19 YCL026C-A-D FRM2 GGCGGACTACAACACATTCA
42 6 19 YCL026C-A-D FRM2 GGCGGACTACAACACATTCA

grep YCL006C ~/bioinfo/microarray/barcode12k_v2final.gal
23 23 23 YCL006C-D CCCGCTAGTCAATAATCGTA
23 24 23 YCL006C-D CCCGCTAGTCAATAATCGTA
29 5 15 YCL006C-D CCCGCTAGTCAATAATCGTA
29 6 15 YCL006C-D CCCGCTAGTCAATAATCGTA
35 23 23 YCL006C-U CCTGAAGATAAATCCCGTCA
35 24 23 YCL006C-U CCTGAAGATAAATCCCGTCA
41 5 15 YCL006C-U CCTGAAGATAAATCCCGTCA
41 6 15 YCL006C-U CCTGAAGATAAATCCCGTCA

grep YAR040C ~/bioinfo/microarray/barcode12k_v2final.gal
7 3 9 YAR040C-U CCATCTCAGTGGGTGCAATG
7 4 9 YAR040C-U CCATCTCAGTGGGTGCAATG

grep YAR037W ~/bioinfo/microarray/barcode12k_v2final.gal
23 3 9 YAR037W-U AGCTAGACTATCGCCCAATG
23 4 9 YAR037W-U AGCTAGACTATCGCCCAATG

a
l’ideal serait de faire cette identification lorsque j’ajoute le fichier gal dans la base.
si on suppose que la liste des orf est dans la base de donnée.
il faut donc extraire le nom des annotation des spot, retirer les caractère qui ont été ajouté pour les puc (U, D et R) en faire une liste d’occurences uniques et les rechercher dans la base de données.
je vais faire une premiere version mais en utilisant un fichier gff au lieu de de la base de donnée.
il faut deja récupéré les ID des spots.
pour ca j’utilise la méthode get_attr_list qui me renvoie la liste des valeur d’un attribut pour l’ensemble des items.
j’utilise ensuite un set pour stocker ces valeur, ainsi je n’ai que celles qui sont distincte.
j’utilise ensuite une expression régulière pour eliminer les -D, -U, et -R

def extract_annotation_id(annot_id):return re.sub(r'-[RUD]+[1-9]*','',annot_id)

def analyse_gal_file():gal_file = '/home/gim2/bioinfo/microarray/barcode12k_v2final.gal'gal = Gal_parser(file_arg = gal_file)id = gal.get_attr_list('ID')print "il y a %i ID de spot dans %s" % (len(id), gal_file)id_set = set(id)print "il y a %i ID distintes dans %s" % (len(id_set), gal_file)id=map(extract_annotation_id, id)id_set = set(id)print "il y a %i annotations d'orf dans %s" % (len(id_set), gal_file)

j’obtiens

il y a 27648 ID de spot dans /home/gim2/bioinfo/microarray/barcode12k_v2final.galil y a 12677 ID distintes dans /home/gim2/bioinfo/microarray/barcode12k_v2final.galil y a 5920 annotations d'orf dans /home/gim2/bioinfo/microarray/barcode12k_v2final.gal

j’arrive donc a récupérer les 5920 orf utilisée dans ces puces
il faut ensuite aller les comparer avec celles du fichiers gff
je refais donc un parser gff rapide (ici)

puis je sélectionne les id des orf
gff_file = '/home/gim2/bank//saccharomyces_cerevisiae.gff'
gff = Gff_parser(file_arg = gff_file)
id2 = gff.get_attr_list('ID')

il y a 16316 ID dans /home/gim2/bank//saccharomyces_cerevisiae.gff
si je prends les tag name et gene en plus j’ai :
id2 = gff.get_attr_list('ID') + gff.get_attr_list('Name') + gff.get_attr_list('gene')
il y a 48948 ID, Name et gene dans /home/gim2/bank//saccharomyces_cerevisiae.gff
si j’utilise les set pour connaitre n’avoir que des valeurs distinctes j’ai :
il y a 16316 ID dans /home/gim2/bank//saccharomyces_cerevisiae.gff
il y a 8098 ID distinctes dans /home/gim2/bank//saccharomyces_cerevisiae.gff
il y a 48948 ID, Name et gene dans /home/gim2/bank//saccharomyces_cerevisiae.gff
il y a 12879 ID, Name et gene distincts dans /home/gim2/bank//saccharomyces_cerevisiae.gff

j’ai besoin aussi des alias des orf car ce sont parfois les anciens noms de ces orfs

alias=gff.get_attr_list('Alias')  for x in alias :      if not x : continue      x=split(x,',')      id2 += x  print len(id2)  print 'il y a %i ID, Name, gene et alias dans %s' % (len(id2), gff_file)  id_set2 = set(id2)  print 'il y a %i ID, Name, gene et alias distincts dans %s' % (len(id_set2), gff_file)

et j’obtiens

il y a 65786 ID, Name, gene et alias dans /home/gim2/bank//saccharomyces_cerevisiae.gffil y a 15774 ID, Name, gene et alias distincts dans /home/gim2/bank//saccharomyces_cerevisiae.gff

je vais donc comparer les id du fichier gal et ceux du fichier gff en faisant une simple différence de set
print "il y a %i ID presente dans %s qui sont absentes de %s" % (len(id_set2), gal_file, gff_file)
print "ce sont les ID : ", id_set.difference(id_set2)

il y a 15774 ID presentes dans /home/gim2/bioinfo/microarray/barcode12k_v2final.gal qui sont absentes de /home/gim2/bank/saccharomyces_cerevisiae.gffce sont les ID :  set(['YCL053C', 'YAR043C', 'Spotting Buffer', 'YCL013W', 'Empty', 'YCL026C', 'YCL006C', 'YAR040C', 'YAR037W'])

Ca correspond a celles trouvées précédemment

12 mars 2008 – recupération des information des microarray

mars 12, 2008

12h03 : les données des puces ne sont pas très simple a récupérée sachant que d’une part les tag sur les spot sont liées a des régions dont l’annotation peut avoir changer depuis le premier design de la puce et que d’autre part certaine séquence de la puce n’ont pas été bien séquencées.
j’ai ecrit 2 parser simple en python pour parser le fichier gal (/home/gim2/workspace/SganArrayL/src/gal_parser.py) et le fichier contenant l’ensemble des délétion (/home/gim2/workspace/SganArrayL/src/deletion_parser.py)
j’ai ainsi pu parser les fichiers barcode12k_v2final.gal et Deletion_primers_PCR_sizes.txt
grace aux méthodes objets créés lors du parsing, j’ai pu verifier quelles séquences du fichiers gal étaient présentes dans le fichiers de description des délétions
j’ai utilisé des set pour cette recherche, c’est très rapide et très pratique pour croisé 2 set de données.
le programme renvoie ceci

ouverture de barcode12k_v2final.gal en 2.764 secbarcode12k_v2final.gal contient 27648 lignesouverture de Deletion_primers_PCR_sizes.txt en 3.048 secDeletion_primers_PCR_sizes.txt contient 6363 lignesbarcode12k_v2final.gal contient 12683 tags distinctsDeletion_primers_PCR_sizes.txt contient 12481 tags distincts688 elements de Deletion_primers_PCR_sizes.txt sont absents de barcode12k_v2final.gal890 elements de barcode12k_v2final.gal sont absents de Deletion_primers_PCR_sizes.txt

*****Edit du 14 mars 2008*****
On vois qu’un certain nombre de tag du fichier gal ne sont pas dans le fichier de deletion. cela provient du fait que certain tag ont été mal séquencés a l’origine. ils ont donc été resequencés et la bonne séquence a été introduites dans le fichier gal.
si je fais un grep sur le fichier barcode12k_v2final.gal en recherchant les ligne qui ont un -R dans le nom de l’orf, que je garde juste la colone du nom d’orf, et que je compte les occurences uniques(grep "\-R" barcode12k_v2final.gal | cut -f4 | uniq |wc) j’obtiens 889 nom d’orf avec un -R (par exemple YDR242W-U-R, YHR005C-D-R, YDR246W-U-R, YHR028C-U-R) vu que le nombre est presque identique a celui des séquences du fichier gal absentes du fichier de délétion, j’en déduis que les ligne avec un nom d’orf en -R correspondent a des spot pour lesquels les tag étaient mal séquencés et qu’il ont été réparés.
si je modifie le programme pour récupéré les id des 890 spot dont les tag ne sont pas dans le fichier de délétion, je constate que ce sont bien les id avec -R, ce qui confirme ma supposition

ouverture de barcode12k_v2final.gal en 3.120 sec
barcode12k_v2final.gal contient 27648 lignes
ouverture de Deletion_primers_PCR_sizes.txt en 1.620 sec
Deletion_primers_PCR_sizes.txt contient 6363 lignes
('Sequence',)
barcode12k_v2final.gal contient 12683 tags distincts
('UPTAG', 'DNTAG')
Deletion_primers_PCR_sizes.txt contient 12481 tags distincts
688 elements de Deletion_primers_PCR_sizes.txt sont absents de barcode12k_v2final.gal
890 elements de barcode12k_v2final.gal sont absents de Deletion_primers_PCR_sizes.txt
liste des 890 id spot present dans barcode12k_v2final.gal et absent de Deletion_primers_PCR_sizes.txt
YDR178W-U-R YIR012W-D-R YNL074C-D-R YDR033W-D-R YPR148C-U-R YCR014C-U-R YLR124W-U-R YPR002W-U-R YML050W-U-R YOL015W-U-R
YGL133W-U-R YJR121W-U-R YLR257W-U-R YNR012W-U-R YDR503C-D-R YJR036C-U-R YEL072W-U-R YKR073C-U-R YDR197W-D-R YKL212W-U-R
YJL139C-U-R YDR400W-U-R YLR432W-D-R YCR083W-D-R YHR008C-D-R YER122C-U-R YLR186W-U-R YML068W-U-R YBR123C-D-R YNL139C-D-R
YGR115C-D-R YDR082W-U-R YLL040C-U-R YNL003C-D-R YPR148C-D-R YMR116C-U-R YMR032W-U-R YNR052C-D-R YKL015W-D-R YKL025C-U-R
YOR179C-D-R YDL161W-U-R YER141W-D-R YOL143C-D-R YKL079W-D-R YAL016W-U-R YOR235W-U-R YJR055W-U-R YER135C-D-R YBL043W-U-R
YOL159C-U-R YOR017W-U-R YGL246C-D-R YLR085C-D-R YOR312C-U-R YER091C-D-R YNR006W-D-R YDR096W-U-R YGR053C-U-R YCR095C-D-R
YMR133W-D-R YFR024C-A-D-R YKL077W-D-R YJL180C-D-R YML115C-U-R YPL078C-U-R YHR125W-D-R YKL166C-U-R YDR504C-U-R YOL056W-D-R
YOR091W-D-R YLR239C-D-R YPR199C-D-R YOR374W-D-R YKR082W-D-R YGR253C-U-R YJL191W-D-R YOL136C-D-R YJR084W-U-R YOR356W-U-R
YIL154C-D-R YOR364W-D-R YNL300W-D-R YLR110C-D-R YMR210W-D-R YNL284C-U-R YGR046W-D-R YPL047W-U-R YDL099W-U-R YDR348C-U-R
YOL118C-U-R YKL002W-D-R YOR170W-U-R YNL117W-U-R YBL008W-D-R YCR090C-D-R YMR172W-D-R YDR300C-U-R YOL043C-D-R YER110C-D-R
YDL020C-U-R YNL014W-D-R YKR006C-U-R YDL199C-D-R YOL013W-A-D-R YGL141W-U-R YGL002W-D-R YOL052C-D-R YKR074W-D-R YDR079W-U-R
YBR047W-U-R YLR341W-D-R YGL036W-U-R YGL041C-U-R YPL049C-U-R YPL270W-U-R YDR043C-D-R YDL146W-D-R YNR047W-U-R YER031C-D-R
YML122C-U-R YDR125C-D-R YGR281W-U-R YGL123W-U-R YNL131W-D-R YLR358C-U-R YOL098C-D-R YPL243W-U-R YDR242W-U-R YNL113W-D-R
YDR507C-U-R YJR011C-U-R YDL005C-U-R YFR057W-U-R YMR041C-U-R YNL237W-U-R YLR060W-U-R YKL009W-U-R YAL047C-U-R YGL094C-D-R
YJR104C-D-R YPL015C-D-R YML117W-A-D-R YLR390W-U-R YNL064C-D-R YJR090C-U-R YKR050W-D-R YBR295W-U-R YCR094W-D-R YPR105C-D-R
YCL038C-U-R YIL114C-D-R YKL138C-U-R YKR057W-D-R YCR063W-U-R YNL015W-D-R YHR167W-D-R YDR525W-A-D-R YLR366W-U-R YIL015W-U-R
YDL236W-U-R YMR201C-D-R YIL118W-U-R YDR113C-U-R YGR165W-U-R YKR014C-D-R YFR027W-D-R YBL102W-D-R YJR097W-U-R YLR423C-U-R
YGR223C-U-R YNL135C-U-R YKL188C-D-R YDR237W-U-R YGR086C-D-R YOR150W-D-R YGR040W-U-R YER095W-D-R YLL057C-D-R YDR216W-D-R
YNL276C-D-R YDR384C-U-R YCR102W-A-D-R YOL163W-D-R YPL187W-D-R YIL034C-U-R YEL009C-D-R YLR420W-D-R YLR431C-D-R YDL117W-U-R
YHR038W-D-R YBR046C-D-R YOR258W-U-R YJL172W-D-R YDR056C-D-R YHR185C-D-R YLR134W-D-R YFL010C-D-R YPR154W-U-R YGR136W-U-R
YKL081W-D-R YPL076W-U-R YGR110W-U-R YKL135C-D-R YDR041W-D-R YDL233W-U-R YKL084W-U-R YNL066W-D-R YNL224C-U-R YPR137W-U-R
YJR119C-U-R YFR049W-U-R YER134C-U-R YOR120W-U-R YJL088W-D-R YDR027C-D-R YDR455C-D-R YGL034C-D-R YGR028W-D-R YDR177W-D-R
YNL050C-D-R YLR052W-D-R YKR072C-D-R YMR121C-D-R YMR275C-U-R YDL196W-D-R YBL046W-D-R YGL147C-D-R YHL034C-U-R YGR051C-U-R
YDL146W-U-R YNR040W-D-R YER117W-U-R YMR302C-D-R YKL069W-D-R YPL069C-U-R YMR021C-U-R YHR178W-U-R YBR161W-D-R YER013W-D-R
YKL041W-U-R YFR010W-D-R YDR270W-U-R YOR133W-U-R YHR110W-D-R YCL024W-U-R YJR024C-D-R YOL077C-D-R YMR129W-D-R YML054C-U-R
YDL234C-U-R YGL171W-U-R YJR107W-U-R YBR278W-U-R YFL044C-U-R YLR328W-D-R YKR098C-D-R YJR124C-U-R YLR130C-D-R YJR091C-D-R
YNL101W-D-R YGL160W-U-R YKL159C-D-R YCR061W-D-R YMR004W-D-R YGR277C-U-R YOR386W-U-R YJL027C-U-R YKL042W-D-R YPL215W-D-R
YDR246W-U-R YDR006C-D-R YGR195W-D-R YBR231C-D-R YML096W-D-R YMR232W-D-R YER014W-D-R YKR044W-D-R YMR227C-U-R YNL141W-D-R
YNL023C-U-R YNL330C-U-R YBR109C-D-R YOR361C-U-R YBR273C-D-R YDR199W-U-R YNL266W-U-R YNL028W-D-R YBR112C-U-R YGR279C-U-R
YJL163C-D-R YLR139C-D-R YPR036W-U-R YDL065C-U-R YKL169C-U-R YGR086C-U-R YDR365C-U-R YPR044C-U-R YKL096W-A-D-R YIR003W-U-R
YJL110C-D-R YCL034W-U-R Empty YPR190C-D-R YMR175W-D-R YPL061W-U-R YPR195C-D-R YLR004C-D-R YML082W-U-R YJL106W-D-R
YKR035C-D-R YPL194W-D-R YNL011C-U-R YBR054W-U-R YNL010W-D-R YHR161C-U-R YBR152W-D-R YPL078C-D-R YFL013W-A-D-R YOR200W-D-R
YLR452C-U-R YPL113C-U-R YLR275W-U-R YLR033W-D-R YPL194W-U-R YLR238W-U-R YFL063W-D-R YMR326C-D-R YKL213C-U-R YFR041C-U-R
YJL043W-D-R YML024W-U-R YDL213C-D-R YBR075W-U-R YKL087C-U-R YCL026C-U-R YKL060C-U-R YOR166C-D-R YCL009C-D-R YJL092W-D-R
YJL128C-U-R YGL142C-U-R YML086C-U-R YPR036W-D-R YDR530C-U-R YPL228W-U-R YJL194W-D-R YOL148C-U-R YMR080C-D-R YPL247C-D-R
YJL074C-U-R YGR248W-U-R YBR056W-D-R YBR176W-D-R YOR056C-U-R YLR327C-D-R YOL141W-D-R YBR075W-D-R YGR174C-D-R YDL023C-U-R
YGR147C-D-R YFR057W-D-R YNL259C-D-R YOR363C-U-R YLR350W-D-R YMR057C-D-R YDR484W-D-R YDR421W-U-R YFL034W-U-R YPR170C-D-R
YER031C-U-R YBR143C-D-R YGR062C-U-R YOR099W-D-R YDL194W-D-R YPL121C-U-R YPL004C-U-R YPL023C-D-R YNL245C-U-R YJR070C-D-R
YNR029C-D-R YER142C-D-R YIL083C-D-R YOL008W-D-R YGL151W-D-R YDR268W-U-R YLR120C-U-R YPL196W-D-R YMR297W-U-R YDL082W-U-R
YPL070W-U-R YAL045C-U-R YDR428C-D-R YGL016W-U-R YDR070C-U-R YNL279W-D-R YGL214W-U-R YMR253C-U-R YMR171C-D-R YGR225W-D-R
YOR298W-U-R YLR092W-U-R YFR011C-U-R YDL010W-U-R YOR259C-U-R YMR170C-D-R YKR001C-U-R YDR450W-D-R YKL128C-U-R YLR291C-D-R
YLL017W-U-R YMR175W-U-R YLL018C-D-R YNL198C-D-R YLR053C-D-R YHL012W-D-R YHR041C-D-R YGL154C-U-R YGL241W-U-R YGL013C-U-R
YFR052W-D-R YPR065W-U-R YNL232W-D-R YDL125C-U-R YOR037W-D-R YJL077C-D-R YNL119W-U-R YHR100C-U-R YHR204W-U-R YDR105C-U-R
YOR057W-U-R YKL222C-D-R YDR289C-U-R YCL022C-U-R YKR106W-U-R YGR257C-D-R YOR381W-U-R YLL051C-D-R YPL201C-D-R YDR182W-U-R
YNL237W-D-R YNL280C-U-R YKL099C-D-R YDR273W-U-R YNL046W-U-R YFR039C-D-R YBR163W-D-R YMR147W-D-R YBR252W-U-R YMR173W-U-R
YBR070C-D-R YHR028C-U-R YMR233W-U-R YNL295W-U-R YEL030W-U-R YPR032W-D-R YNR069C-D-R YKL152C-U-R YNL268W-U-R YOL083W-D-R
YGL227W-U-R YHL045W-D-R YGR112W-U-R YKR030W-D-R YML110C-D-R YGR180C-D-R YGR196C-U-R YKL199C-U-R YLR342W-U-R YGL125W-U-R
YHL035C-U-R YGR093W-D-R YDR496C-D-R YER052C-D-R YOR228C-U-R YNR015W-U-R YJL093C-U-R YMR160W-U-R YFR030W-D-R YJR023C-U-R
YNR014W-D-R YMR216C-D-R YPR129W-D-R YAL013W-U-R YER090W-D-R YOR105W-D-R YHR039C-B-U-R YDL135C-U-R YGR037C-D-R YKR048C-D-R
YMR177W-U-R YPR200C-D-R YGR234W-U-R YNL338W-U-R YJL161W-D-R YFL020C-U-R YIL110W-U-R YPR088C-D-R YMR143W-D-R YBR206W-U-R
YDL142C-U-R YGR286C-U-R YJL010C-U-R YPL032C-D-R YNL043C-U-R YFR055W-U-R YNR056C-D-R YOR200W-U-R YLR125W-U-R YHR154W-U-R
YNL154C-D-R YNR008W-U-R YHR035W-D-R YLR364W-U-R YDR453C-U-R YGL115W-D-R YDR227W-D-R YNL118C-D-R YGR202C-D-R YGR097W-D-R
YKR004C-U-R YKL005C-U-R YNL073W-D-R YLR282C-U-R YPL183W-A-D-R YNL280C-D-R YBL098W-D-R YJL003W-U-R YBR094W-U-R YPL245W-D-R
YBR178W-D-R YLR447C-U-R YHL047C-U-R YCR048W-U-R YMR284W-U-R YGL097W-D-R YPL207W-U-R YML116W-D-R YLR324W-U-R YJL206C-D-R
YDL061C-U-R YOR183W-D-R YJL182C-D-R YNL215W-D-R YDR052C-U-R YOR331C-U-R YPR027C-D-R YBR250W-D-R YBL093C-D-R YGL080W-U-R
YPL199C-D-R YOR021C-U-R YCL038C-D2 YKL100C-D-R YDL084W-D-R YBR285W-D-R YEL052W-D-R YDR284C-U-R YIL077C-U-R YMR119W-D-R
YPL109C-U-R Spotting Buffer YIL014W-U-R YCL037C-U-R YNL156C-D-R YDR392W-U-R YKL001C-D-R YHR154W-D-R YDL126C-U-R YCR083W-U-R
YGL028C-U-R YKL216W-D-R YDL140C-U-R YPR021C-U-R YIL156W-D-R YDR108W-U-R YCL036W-U-R YLR097C-D-R YOR201C-D-R YGL196W-D-R
YNR075W-D-R YER126C-U-R YDR380W-U-R YKL220C-D-R YMR040W-U-R YBL087C-D-R YJL122W-D-R YLR456W-U-R YGR276C-D-R YLR242C-U-R
YBL048W-D-R YPR049C-D-R YPR076W-D-R YDR198C-U-R YNR034W-U-R YDR223W-D-R YGR121C-U-R YGR166W-U-R YPL041C-D-R YFL001W-D-R
YPL025C-U-R YJL126W-D-R YPL005W-U-R YDR500C-U-R YNL109W-U-R YOR029W-D-R YER066W-D-R YKL078W-D-R YOR298C-A-U-R YPR116W-D-R
YBR293W-U-R YIL117C-U-R YML055W-U-R YDR509W-U-R YJR059W-D-R YPL189W-U-R YGR152C-D-R YFL026W-D-R YJL183W-D-R YBL007C-D-R
YJR030C-U-R YGL054C-U-R YDL192W-D-R YOR137C-D-R YNL110C-U-R YCR073C-U-R YPL195W-D-R YMR005W-U-R YJR049C-U-R YJR013W-U-R
YGR161C-U-R YBR020W-U-R YDL183C-D-R YOR350C-D-R YER152C-U-R YGR135W-U-R YFL006W-D-R YKL056C-U-R YBR022W-D-R YMR154C-D-R
YPR163C-D-R YKL055C-U-R YDL238C-U-R YPR145W-D-R YDR179W-A-U-R YBR157C-D-R YIL128W-U-R YDR410C-U-R YOR337W-U-R YLR309C-D-R
YHR196W-D-R YNL271C-D-R YHR044C-U-R YCL060C-U-R YML077W-U-R YOR274W-U-R YGL077C-U-R YPL090C-U-R YML088W-U-R YDL219W-U-R
YFR043C-U-R YDR111C-D-R YLR039C-D-R YDR093W-D-R YGR208W-D-R YDL031W-D-R YGL107C-D-R YKL148C-D-R YDR073W-U-R YLR178C-D-R
YKL142W-D-R YDR176W-U-R YHR137W-U-R YIL141W-D-R YOR197W-D-R YGL040C-U-R YPL107W-D-R YJL076W-U-R YOR107W-D-R YBL006C-D-R
YJL002C-D-R YCR089W-U-R YDR355C-U-R YJL146W-U-R YGL031C-D-R YBR227C-U-R YJR078W-U-R YCL008C-U-R YJR049C-D-R YNL089C-D-R
YCR107W-D-R YPR004C-U-R YMR191W-U-R YJL158C-D-R YKR105C-D-R YBR298C-U-R YIL042C-U-R YJR034W-D-R YMR160W-D-R YIL105C-D-R
YKR076W-D-R YBL082C-D-R YDL134C-A-U-R YGL132W-U-R YBR251W-D-R YBR279W-U-R YPL079W-U-R YDR406W-D-R YGR189C-D-R YIL094C-D-R
YPR055W-U-R YBL101C-D-R YMR073C-U-R YGR213C-U-R YBR263W-D-R YJL017W-U-R YEL045C-U-R YGL105W-U-R YDL162C-D-R YOR352W-D-R
YOR103C-U-R YLR347C-U-R YKL119C-U-R YBR274W-U-R YMR148W-U-R YER008C-U-R YCR092C-D-R YBR137W-D-R YOL147C-U-R YPL048W-U-R
YDR387C-U-R YLR397C-U-R YOR248W-U-R YNL093W-U-R YPL051W-D-R YDL008W-D-R YPL005W-D-R YDL081C-U-R YMR181C-D-R YDR317W-D-R
YPL119C-U-R YBL072C-D-R YDR445C-D-R YJR121W-D-R YLR416C-D-R YBR108W-U-R YLL007C-D-R YJR063W-U-R YER108C-D-R YOR355W-D-R
YFL042C-U-R YCR020W-B-U-R YMR107W-U-R YER030W-D-R YCL064C-U-R YBR182C-D-R YDR102C-U-R YOR161C-D-R YPR043W-D-R YBR014C-U-R
YCR013C-D-R YAL016W-D-R YHL039W-D-R YMR290C-U-R YML104C-D-R YPR106W-D-R YNL281W-U-R YBR189W-D-R YHL013C-U-R YLR402W-D-R
YFL014W-U-R YBR170C-U-R YDR127W-D-R YDR269C-U-R YDR328C-U-R YMR089C-D-R YMR092C-U-R YNL091W-D-R YLL006W-U-R YOR007C-D-R
YNL055C-D-R YLR409C-U-R YHR050W-D-R YHR005C-D-R YML081W-U-R YDR193W-U-R YPL198W-U-R YKL096W-D-R YBR213W-U-R YPR197C-U-R
YJR106W-D-R YBL055C-D-R YJL078C-U-R YPR146C-U-R YBR015C-D-R YIL086C-U-R YDR385W-U-R YKR027W-D-R YKR101W-D-R YCR086W-D-R
YER039C-U-R YDR124W-U-R YBR150C-U-R YML130C-U-R YDR171W-D-R YJL162C-U-R YPL257W-U-R YOR087W-D-R YOL044W-U-R YGR117C-D-R
YOL012C-D-R YJR113C-U-R YNL031C-D-R YBR191W-D-R YDR286C-U-R YKL024C-U-R YBL085W-D-R YDR455C-U-R YNL171C-U-R YDR242W-D-R
YNL080C-D-R YHR064C-D-R YEL017C-A-U-R YGR243W-U-R YLR436C-D-R YLL006W-D-R YER128W-U-R YDL035C-U-R YFL034C-A-U-R YPL268W-D-R
YBL058W-U-R YML035C-D-R YMR169C-D-R YGL092W-U-R YGR032W-D-R YML091C-D-R YNL330C-D-R YIL111W-D-R YBR280C-U-R YML056C-U-R
YBR040W-D-R YML031W-D-R YMR002W-U-R YDL227C-D-R YNR071C-D-R YDL175C-D-R YMR102C-D-R YPR163C-U-R YFR004W-D-R YKR059W-D-R
YKL011C-U-R YOL150C-D-R YIL100W-D-R YGL254W-U-R YCR065W-D-R YBR242W-U-R YLR429W-D-R YDR427W-D-R YDR248C-D-R YHR143W-D-R
YJR006W-U-R YJR032W-U-R YLR206W-U-R YBR300C-U-R YLR389C-U-R YML098W-U-R YPL271W-D-R YLR444C-U-R YDR017C-U-R YPR159W-D-R
YML115C-D-R YLR218C-D-R YCL039W-U-R YOL139C-D-R YFR025C-D-R YJR095W-U-R YOR254C-U-R YDR360W-U-R YJL191W-U-R YJL136C-D-R
YDR054C-D-R YOR318C-U-R YGR089W-U-R YDR341C-D-R


il y a 3 spots sans le -R a la fin : Empty, YCL038C-D2 et Spotting Buffer
seul YCL038C-D2 nous intéresse.
l’orf YCL038C existe dans le gal avec les spots
YCL038C-D1 ATG22 CACCTTTCGAGAGGACGATG
YCL038C-D2 ATG22 CCTGTAGAATAAGGCTCAAC
YCL038C-U2 ATG22 GGTTCTACACACCATAATGC
YCL038C-U-R AUT4 GGTTCTACACACCATAATGA
YCL038C-U1 ATG22 CCAGCCTGTAAAGGTGTCGA

l’orf YCL038C a les noms ATG22 et AUT4
si je cherche les séquence des tag de ces spot dans le fichier de délétion, je retrouve celle du spot YCL038C-D1 et YCL038C-U2 à la ligne de la délétion de YCL038C.
je ne retrouve pas les spot YCL038C-D2 et YCL038C-U-R.
et aussi je retrouve YCL038C-U1 à la ligne de YDR074W dans la colonne UPTAG.
ilsemble y avoir une confusion a ce niveau. cepandant si je recherche YDR074W dans le fichier gal je ne trouve que le spot de la séquence down, donc il semble que ce soit correct quand meme

*****Fin edit*****

le fichier /home/gim2/bioinfo/microarray/A-MEXP-714_SLRI_Yeast_Barcode_13k.txt contient toutes les information de la puce, il est supposé contenir les meme information que le fichier gal
j’ai fait un parser pour ce fichier barcode_parser.py et j’ai appliqué les meme méthode que precedemment.
j’obtiens en sortie

ouverture de barcode12k_v2final.gal en 2.450 secbarcode12k_v2final.gal contient 27648 lignesouverture de Deletion_primers_PCR_sizes.txt en 2.741 secDeletion_primers_PCR_sizes.txt contient 6363 lignesouverture de A-MEXP-714_SLRI_Yeast_Barcode_13k.txt en 3.531 secA-MEXP-714_SLRI_Yeast_Barcode_13k.txt contient 27648 lignesbarcode12k_v2final.gal contient 12683 tags distinctsA-MEXP-714_SLRI_Yeast_Barcode_13k.txt contient 12681 tags distincts0 elements de A-MEXP-714_SLRI_Yeast_Barcode_13k.txt sont absents de barcode12k_v2final.gal2 elements de barcode12k_v2final.gal sont absents de A-MEXP-714_SLRI_Yeast_Barcode_13k.txt

On voit que le fichier gal contient toutes les séquences du fichier barcode. 2 items du fichier gal sont absent du fichier barcode, il s’agit des item empty et Spotting Buffer, ce ne sont donc pas des sequence a proprement parlé.
ce sont donc bien les memes fichiers.

je recherche ensuite les genes du fichier barcode qui ne sont plus présent dans le fichier gff actuel (juillet 2007)
j’ai recréé un parser gff gff_parser.py dans le meme style que les autres.
je fais une recherche sur les nom ou id des orf dans le gff et sur ‘Reporter BioSequence Database Entry [ebi.ac.uk:Database:sgd]‘ dans le fichier barcode
je récupère en sortie

ouverture de A-MEXP-714_SLRI_Yeast_Barcode_13k.txt en 4.002 secA-MEXP-714_SLRI_Yeast_Barcode_13k.txt contient 27648 lignesouverture de saccharomyces_cerevisiae.gff en 3.488 secsaccharomyces_cerevisiae.gff contient 16316 lignessaccharomyces_cerevisiae.gff contient 8097 tags distincts('Reporter BioSequence Database Entry [ebi.ac.uk:Database:sgd]',)A-MEXP-714_SLRI_Yeast_Barcode_13k.txt contient 5867 tags distincts103 elements de A-MEXP-714_SLRI_Yeast_Barcode_13k.txt sont absents de saccharomyces_cerevisiae.gff2333 elements de saccharomyces_cerevisiae.gff sont absents de A-MEXP-714_SLRI_Yeast_Barcode_13k.txtYCR062W YAL064C YCR020W YER014C YCL006C YER108C YKL158W YMR306C YKL006C YKL200CYGL046W YFL018W YER038W YOL053C YFL010W YDR474C YMR031W YFR024C YHR049C YMR244CYFL035C YMR075C YKL199C YMR052C YAR044W YMR086C YBR084C YMR158C YNR032C YIR020WYMR304C YBR162W YER019C YBR100W YJR094W YER068C YAR043C YMR153C YGL226C YBR075WYCR073W YMR172C YLR312W YMR193C YDL045W YPL183W YCL062W YML013C YLR391W YER067CYOR240W YDL133C YHR132W YEL017C YOR298C YPR133W YFL006W YJL018W YML058C YKR035WYML010C YCR102W YER066C YML033W YOR088W YMR135W YOR304C YIL009C YPR090W YHR021WYJR010C YAL034W YCL060C YMR194C YFL013W YLR438C YJL017W YOL013W YAR002C YCR087CYML081C YMR316C YAR037W YCL012W YFL034C YCL013W YKL053C YCL053C YAL035C YIL015CYFL043C YCL026C YER007C YJL021C YDR179W YAL058C YML102C YMR290W YGR122C YER087CYER048W YAR040C YCL003W YCR062W

on voit qu’il y a environ 100 orf qui ne sont plus présentes dans la base