Spliter un fichier fasta multiséquence en plusieurs fichiers

Fermé
sue - 19 mars 2015 à 00:10
 sue - 19 mars 2015 à 20:40
Bonjour,

Je possède des fichiers fasta multiséquence et je voudrais obtenir à partir de ces fichiers multiséquence ( 13 séquences ) 13 fichier différent avec chacune des séquences. De plus il faudrait que ces fichiers se nomme "ce que contient la première ligne"

Merci pour votre aide
Cordialement,



<config>Mac OS X (10.10.2) /
A voir également:

3 réponses

dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
19 mars 2015 à 08:15
hello
montre un exemple de fichier
0
Un exemple de fichier fasta multi séquence est donné ici : http://en.wikipedia.org/wiki/FASTA_format
Il y a ici deux séquences dans cet exemple et 13 dans le cas de mes fichiers
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
19 mars 2015 à 14:25
$ awk '/^>/{n=substr($0, 2)} {print > n}' fichier
$ ls
SEQUENCE_1 SEQUENCE_2 fichier
$ more S*
::::::::::::::
SEQUENCE_1
::::::::::::::
>SEQUENCE_1
MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG
LVSVKVSDDFTIAAMRPSYLSYEDLDMTFVENEYKALVAELEKENEERRRLKDPNKPEHK
IPQFASRKQLSDAILKEAEEKIKEELKAQGKPEKIWDNIIPGKMNSFIADNSQLDSKLTL
MGQFYVMDDKKTVEQVIAEKEKEFGGKIKIVEFICFEVGEGLEKKTEDFAAEVAAQL
::::::::::::::
SEQUENCE_2
::::::::::::::
>SEQUENCE_2
SATVSEINSETDFVAKNDQFIALTKDTTAHIQSNSLQSVEELHSSTINGVKFEEYLKSQI
ATIGENLVVRRFATLKAGANGVVNGYIHTNGRVGVVIAAACDSAEVASKSRDLLRQICMH
0
Navré mais je suis un vrai néophyte, ce qui entraine une autre question...
Etant donné que ces fichiers sont nombreux dans un dossier particulier et que je dois faire de même avec tous ces fichiers es qu'un script de ce type me permettrai de tout faire de façon itérative ?
for X in $(ls) ; do awk '/^>/{n=substr($0, 13)} {print > n}' $X ; done

Encore merci pour ces réponses
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
19 mars 2015 à 14:56
faire simplement
awk '/^>/{n=substr($0, 13)} {print > n}'  *

si une même séquence se trouve dans plusieurs fichiers, seule la dernière restera
0
Quand je rentre cette commande seul quelques fichier sont traité avec un message d'erreur :
awk: ref|NP_007761.1|COX3_15058 cytochrome c oxidase subunit III (mitochondrion) [Branchiostoma floridae] makes too many open files

pour certaine séquences puis le programme s'interrompt.
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
Modifié par dubcek le 19/03/2015 à 15:24
on ne peut pas mettre comme nom de fichier une séquence qui contient des | ] [ ou ()
il ne faut que du texte, chiffres, ou point, tiret, etc
montre des exemples de séquences
0
>gi|658608828|ref|YP_009045697.1| NADH dehydrogenase subunit 2 (mitochondrion) [Ideopsis similis]
aaaaaaaaaaaaaeeeeeeeeee
>gi|658608829|ref|YP_009045698.1| cytochrome c oxidase subunit I, partial (mitochondrion) [Ideopsis similis]
aaaaaaaaaaaaaaaaaaaaeeeeeeeeeeeeee
>gi|658608830|ref|YP_009045699.1| cytochrome c oxidase subunit II (mitochondrion) [Ideopsis similis]
aaaaaaaaaaaeeeeeeeeeeeeeee
>gi|658608833|ref|YP_009045700.1| ATP synthase F0 subunit 8 (mitochondrion) [Ideopsis similis]
aaeaaeaaaaeaeaeaeaaeaeaaaeeeaaeae
>gi|658608832|ref|YP_009045701.1| ATP synthase F0 subunit 6 (mitochondrion) [Ideopsis similis]
aaaaaeaeeaeaeaeaeaeaeeaeaeaeeaaeeaeeaeaeeaea
>gi|658608831|ref|YP_009045702.1| cytochrome c oxidase subunit III (mitochondrion) [Ideopsis similis]
aeeaeaeaeaeeaeaeeeaeaeeaeeeeaea
>gi|658608834|ref|YP_009045703.1| NADH dehydrogenase subunit 3 (mitochondrion) [Ideopsis similis]
eaeaeaeaeaeaeeaeeeeaeaeaaeaeeeaeaee
>gi|658608835|ref|YP_009045704.1| NADH dehydrogenase subunit 5 (mitochondrion) [Ideopsis similis]
aaeaeeaaeeaeaeaeaeaeaeeeaeaeea
>gi|658608836|ref|YP_009045705.1| NADH dehydrogenase subunit 4 (mitochondrion) [Ideopsis similis]
aeaeeaeaeaeaeaeeaaeeaeeaeaeaeeaeeaea
>gi|658608837|ref|YP_009045706.1| NADH dehydrogenase subunit 4L (mitochondrion) [Ideopsis similis]
eaeaeeaeaeeeaeeaeeaeeaeaeaeaeaeeaeeaea
>gi|658608838|ref|YP_009045707.1| NADH dehydrogenase subunit 6 (mitochondrion) [Ideopsis similis]
aeaeeaeaeeeaeaeaeaeeaeeaeeaeaeaea
>gi|658608840|ref|YP_009045708.1| cytochrome b (mitochondrion) [Ideopsis similis]
eaeaeaeeaeaeeaeeaeeaeea
>gi|658608839|ref|YP_009045709.1| NADH dehydrogenase subunit 1 (mitochondrion) [Ideopsis similis]
aeaeeaaeaeeaeeae

Voila un exemple d'un de mes fichiers, l'idéal serait qu'il ai le nom :
NADH dehydrogenase subunit 2 Ideopsis similisis
j'ai mis des "a" et "e" à la place des séquences parce que je ne pouvais pas écrire en majuscule
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
19 mars 2015 à 15:59
on ne prend que le champ 5
on supprime tout ce qu'il y a entre () et tout les ][ et l'espace du début
$ awk -F '|' '/^>/{gsub("[(][^)]*) |[][]|^ *", "", $5); n=$5} {print > n}' fichier
0
Lorsque je rentre cette ligne j'obtiens :
$ awk -F '|' '/^>/{gsub("[(][^)]*) |[][]|^ *", "", $5); n=$5} {print > n}' Seq1a1
awk: syntax error in regular expression [(][^)]*) |[][]|^ * at |[][]|^ *
source line number 1
context is
/^>/{gsub("[(][^)]*) |[][]|^ *", "", >>> $5) <<<

De plus il faut bien que je fasse ça pour n entre 1 et 13 pour avoir toutes mes séquences c'est ça ?
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
Modifié par dubcek le 19/03/2015 à 17:12
macOS ..aie ... . essayer avec nawk
non, awk va lire tout le fichier qui contient les 13 séquences et créer les 13 fichiers
0
ça ne fonctionne pas avec nawk ( -bash: nawk: command not found) ... Oui mac OS...
D'accord donc normalement je devrait pouvoir extraire toutes les séquence unique avec cette ligne de commande pour tous mes fichiers?
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
19 mars 2015 à 17:50
oui
je vais essayer avec un vieil awk compatible avec celui du Mac
0
dubcek Messages postés 18723 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 11 mai 2024 5 615
Modifié par dubcek le 19/03/2015 à 17:58
essayer
awk -F '|' '/^>/{gsub("[(][^)]*[)] |[][]", "", $5); sub("^ ", "", $5); n=$5} {print > n}' Seq1a1
0