Bonjour à tous ,
J'ai une première liste ressemblant à ceci :
Et une deuxième liste, un peu differente mais comprenant l'information de la premiere ressemblant à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Aats-phe Alas aralar1 ATPsyn-beta ATPsyn-d ATPsyn-gamma blw CG10219 CG10664
Et je souhaite savoir si tous les elements de la premières listes sont dans la seconde, car, comme on peut le voir, chaque element de la première liste est contenu dans un element de la seconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Aats-phe-RA Alas-RA aralar1-RA ATPsyn-beta-RC ATPsyn-d.a ATPsyn-gamma-RD blw-RE CG10219-RF CG10664-RE
J'ai donc écris ce script, qui ne fonctionne pas :
Quelqu'un pourrait m'aider ? Merci d'avance
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 #!/usr/local/bin/perl use strict; use warnings; use Carp qw(confess); use Getopt::Long; use Bio::SeqIO; my $fasta_file; my $input; my @transcript; my @genes; GetOptions("fasta=s" => \$fasta_file ,"file=s" => \$input); my $in = Bio::SeqIO->new( -file => $fasta_file, '-format' => 'Fasta' ); open(my $inp,'<',$input) or die "$input : $!\n\n"; #deuxième liste dans mon exemple while ( my $seq = $in->next_seq()){ my $id = $seq->primary_id ; push (@transcript,$id); } # première liste dans mon exemple while (my $ligne=<$inp>) { push @genes,$ligne; } foreach my $g (@genes){ foreach my $t (@transcript){ if ($t =~ m/$g/){ print "transcript : $t genes : $g"; } } }
Partager