Bonjour,
En fait je viens d'écrire un petit script qui prend en entrée un fichier fasta, un motif et doit copier les lignes en fonction de la présence ou non de ce motif.
Les sequences que je veux copier sont donc délimitées par
>gi blabla
[A-Z]*
>gi blabla...
en vert la séquence à récupérer à chaque tour de boucle.
Le code tourne car il me crée les fichiers TextKeep, TextRecup et OutFile, mais ils sont désespérément vides...
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
48
49
50
51
52
53
54
55 #!c:\perl\perl.exe use strict; use warnings; use File::Copy; # Insérer la variable du fichier input open (InFile,"test.fasta") || die "Le fichier source n'est pas bon\n"; # insérer le motif saisi par l'utilisateur my $Tag = "associated"; my $Ligne; # si on veut récupérer le fichier sans le tag my $Recup = 1; # $TextRecup récupération du match open (GARDE, ">TextRecup.fasta") || die "erreur"; # $TextKeep ce qui ne contient pas le match open (KEEP, ">TextKeep.fasta") || die "erreur"; # lecture du fichier ligne par ligne while ($Ligne=<InFile>) { if($Ligne =~ m/(\^\>gi.*($Tag).*)>gi/) { print GARDE $1; } elsif($Ligne =~m/(\^\>gi.*)>gi/) { print KEEP $1; } } close(GARDE); close(KEEP); # choix du fichier à produire if($Recup == 1) { copy("TextKeep.fasta", "OutFile.fasta"); } elsif($Recup == 0) { copy("TextRecup.fasta", "OutFile.fasta"); } else { print("erreur lors de la copie"); }
Merci d'avance à qui pourra m'éclairer ...
Partager