Bonjour à tous,
je débute sur perl (d'habitude j'utilise bash) et je bloque en essayant de concaténer des tableaux de hachage. Le but de la manip est de concaténer plusieurs fichiers contenant des séquences, du style :
fichier 1 :
ind1 [sequence]
ind2 [sequence]
ind5 [sequence]
fichier 2 :
ind3 [sequence]
ind4 [sequence]
ind5 [sequence]
sachant que tous les individus ne sont pas représentés dans tous les fichiers (il va donc falloir que j'ajoute les données manquantes au fil de la concaténation).
ce que j'ai fais pour l'instant :
créé un tableau de hashage dont les clés sont les noms de mes individus (contenus dans le fichier concat).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 open(ind, '<', 'concat'); my %concat=<ind>; print %concat;
ensuite
J'ouvre mon premier fichier de séquences (locus0001), je le stocke dans un tableau de hashage et je le concatène avec celui contenant les noms d'individus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 open(locus1, '<', 'locus0001'); my %locus1=<locus1>; while(<locus1>){/([A-Za-z0-9]*)[[:space:]]*(.*)/; push @{$concat{$1}}, $2, "\n";}
Seulement, ca ne marche pas et j'obtiens quelque chose comme ca :
En lieu et place de mes séquences, une chaine de type ARRAY(...), et je ne sais pas ce que ca veut dire, et il y a des doublons dans les noms des individus...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Neu83ARRAY(0x13b8130)Sbz179 And54 oph_D Brk117 BZ1 Brk120 1488ARRAY(0x13b7fc8)Neu73 Shv51 Dej22 Neu56 Ker382 Sbz177 Krk148 Neu50 Neu18 BZ16 Sis367 SGH90 Ap106 MrD264 Neu83 Ker380 And57 SGH88 Tov320 smk228 Sis354 Voj344 Smk226 Ngs408 1488 DgH208 Krk150 ToV319 DgH207 Neu04 MrD266 Neu55 Neu11 Neu84ARRAY(0x13cf428)Neu84 Neu36 Neu73ARRAY(0x13b80a0)Ap105 Neu72 Shv43 oph_T Ngs394 Voj345
Quelqu'un aurait une idée ?
merci d'avance,
Lois.
Partager