Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/01/2017, à 12:11

valnovice

[Resolu] gestion format fasta

Bonjour tout le monde,
Je suis nouvelle dans ce forum (merci la communauté ubuntu) et novice en lignes  de commande (mais je connais quand meme quelques bases). Voila mon (mes) soucis : j'ai un fichier fasta (coding sequence). Dans ce fichier fasta, il y a plusieurs gènes de plusieurs espèces différentes. Je voudrai :
1. regrouper chaque espèce (par accession number, ca je l'ai fait et je pense que c'est bon)
2. mettre par ordre les gènes, chaque espece possede à peu pres 14 genes (je souhaiterais avoir gene1, gene2, gene3...) car en ce moment, j'ai gene5, puis gene1, puis gene 3 ... (en meme temps il y a des especes qui n'ont pas les 14 genes)
3.enlever tous les > (ne garder que pour la premiere séquence pour l'identification de l'espece) et concatener tous les gènes
Je ne sais pas si je suis très claire mais merci merci merci d'avance pour ceux/celles qui répondent à ce message

Dernière modification par valnovice (Le 18/01/2017, à 11:17)

Hors ligne

#2 Le 13/01/2017, à 12:43

pingouinux

Re : [Resolu] gestion format fasta

Bonjour,
Est-ce un fichier texte ?
Le mieux serait de montrer un petit exemple : fichier de départ + fichier d'arrivée

Hors ligne

#3 Le 13/01/2017, à 12:50

kholo

Re : [Resolu] gestion format fasta

salut,
on a des fichiers textes formatés...
le fait de le décortiquer s'appelle parser
tu trouveras plus facilement des exemples avec ce terme
sur wikipedia on trouve aussi des explications et exemples du format.

j'ai regardé aussi ici
et

si j'ai compris chaque séquence est annoncée avec le >
comme un commentaire.
cette ligne est séparée par des |
puis on a plusieurs lignes qui représentent la suite des lettres du brin

pourquoi ne pas utiliser des trucs tout fait ?
pour les trucs tout fait, il faut voir sur les sites des universités :
http://genet.univ-tours.fr/gen001400_fi … h4ec12.htm
readseq est dans les dépôts (de mon 14.04 au moins !)

un petit copier coller de

le ppt a écrit :

Portails de bioinformatiques, fonctionnant en ligne, et comportant plusieurs outils en accès libre ou payant.
Exemples :
    - EBI (European Bioinformatics Institute)
http://www.ebi.ac.uk

    - NCBI (National Center for Biotechnology Information)
http://www.ncbi.nlm.nih.gov

Hors ligne

#4 Le 13/01/2017, à 12:50

inbox

Re : [Resolu] gestion format fasta

Salut,

Je ne connais absolument pas le sujet. J'ai fait une petite recherche et ai trouvé qu'il existe dans les dépôts de Xenial 16.04, un paquet nommé fastaq. Celui ci permet de manipuler des fichiers fasta. Voir le manuel pour plus d'explications sur son fonctionnement (man fastaq) une fois installé.

Il existe aussi un autre paquet nommé cdbfasta qui permet de manipuler (facilement) plusieurs fichiers fasta et particulièrement des fichiers volumineux.

Voir aussi ce sujet qui parle de manipuler des fichiers fasta.

A+

[EDIT] Ici des commandes bash pour manipuler du fasta. Et il y a d'autres sur le même site.

Dernière modification par inbox (Le 13/01/2017, à 12:52)


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#5 Le 13/01/2017, à 13:20

kholo

Re : [Resolu] gestion format fasta

ici quelques infos plus généralistes :

la page a écrit :

... voila les logiciels que je trouve déjà indispensables : ...
Par domaines

    Modélisation moléculaire
        rasmol
        PyMOL
        gnuplot
        Cn3D
        GROMACS
        Garlic
        Raster3D
        TINKER
    Neurosciences computationnelles
        NEURON
        PDP++
        NSL
    Bio-informatique génomique
        Artemis
        ClustalX
        EMBOS tools
    Phylo-génétique
        NJPlot
        SMILE
    Analyse d'Images Numériques
        ImageJ

bio-linux
dans les commentaires ils parlent de bio linux
et de sa suite de logiciels

Les programmes installés sur ta distribution :
pour connaître les programmes en rapport avec fasta dans les paquets de ta distribution,
il suffit de faire :

apt search fasta

voilà ce que ça me retourne sur une 14.04 :

biomaj/trusty 1.2.3-3 all
  Logiciel de mise à jour de banque de données biologiques

biomaj-watcher/trusty 1.2.1-1 all
  Mise à jour de la base de données biologiques - interface web

cdbfasta/trusty 0.99-20100722-1 amd64
  Constant DataBase indexing and retrieval tools for multi-FASTA files

clustalw/trusty 2.1+lgpl-4 amd64
  alignement de séquences de nucléotides ou de peptides

conservation-code/trusty 20110309.0-3 all
  protein sequence conservation scoring tool

dnaclust/trusty 3-2 amd64
  tool for clustering millions of short DNA sequences

exonerate/trusty 2.2.0-6 amd64
  generic tool for pairwise sequence comparison

fastx-toolkit/trusty 0.0.14-1 amd64
  outils de prétraitement des lectures de nucléotides courts aux formats FASTQ/A

flexbar/trusty 2.40-2 amd64
  flexible barcode and adapter removal for sequencing platforms

grinder/trusty 0.5.3-3 all
  Versatile omics shotgun and amplicon sequencing read simulator

jellyfish/trusty 1.1.10-1 amd64
  count k-mers in DNA sequences

libgenome-1.3-0/trusty 1.3.1-6 amd64
  boîte à outils pour le développement de logiciels bioinformatique connexes

libgenome-1.3-dev/trusty 1.3.1-6 amd64
  toolkit for developing bioinformatic related software (devel)

librostlab-doc/trusty 1.0.20-3ubuntu1 all
  Bibliothèque C++ pour la biologie computationnelle (documentation)

librostlab3/trusty 1.0.20-3ubuntu1 amd64
  C++ library for computational biology

librostlab3-dbg/trusty 1.0.20-3ubuntu1 amd64
  Symboles de débogage pour librostlab

librostlab3-dev/trusty 1.0.20-3ubuntu1 amd64
  C++ library for computational biology (development)

libsnp-sites1/trusty 1.5.0-1ubuntu1 amd64
  Shared libraries of the package snp-sites

libsnp-sites1-dev/trusty 1.5.0-1ubuntu1 amd64
  Static libraries and header files for the package snp-sites

libsquizz/trusty 0.99b+dfsg-3 amd64
  Conversion libs used by squizz genetic sequence converter

libsquizz-dev/trusty 0.99b+dfsg-3 amd64
  development tools for squizz genetic sequence converter

ltrsift-examples/trusty 1.0.2-1 all
  example data for LTRsift

mapsembler2/trusty 2.0.5+dfsg-2 amd64
  bioinformatics targeted assembly software

mira-assembler/trusty 4.0-1 amd64
  Whole Genome Shotgun and EST Sequence Assembler

ncbi-rrna-data/trusty 6.1.20120620-7 all
  large rRNA BLAST databases distributed with the NCBI toolkit

norsnet/trusty 1.0.17-1 all
  tool to identify unstructured loops in proteins

picard-tools/trusty 1.105-1 all
  Outils en ligne de commande pour manipuler les fichiers SAM et BAM

prime-phylo/trusty 1.0.11-1build2 amd64
  bayesian estimation of gene trees taking the species tree into account

profbval/trusty 1.0.22-1 all
  predictor of flexible/rigid protein residues from sequence

python-starpy/trusty 1.0.1-1 all
  Asterisk (AMI) protocols for Twisted Python

seaview/trusty 1:4.4.2-1 amd64
  Interface multiplateforme pour l'alignement de séquences et la phylogénie

seqtk/trusty 1.0-1 amd64
  Fast and lightweight tool for processing sequences in the FASTA or FASTQ format

snp-sites/trusty 1.5.0-1ubuntu1 amd64
  Binary code for the package snp-sites

squizz/trusty 0.99b+dfsg-3 amd64
  Converter for genetic sequences and alignments

wise/trusty 2.4.1-14 amd64
  Comparaison de biopolymères, comme l'ADN et les protéines

pour installer :
par exemple la dernière ligne :

wise/trusty 2.4.1-14 amd64
  Comparaison de biopolymères, comme l'ADN et les protéines

faire un "sudo apt install programme"

sudo apt install wise

idem pour les autres trucs qui peuvent t'intéresser

ceci dit les codeurs vont également regarder comment parser ton fichier...

Hors ligne

#6 Le 13/01/2017, à 13:32

valnovice

Re : [Resolu] gestion format fasta

oooh ! merci !
il y en a pas mal que j'utilise déjà, je vais regarder et essayer le reste quand j'aurai un fichier propre wink
Tout ça m'a l'air déjà très poussé, mais je suis sûre qu'avec grep/sed/cat/boucle for ... je devrai y arriver mais comment? hmm:/:/

Hors ligne

#7 Le 13/01/2017, à 13:59

kholo

Re : [Resolu] gestion format fasta

en suivant le lien de inbox
on peut déjà partir sur du bash

on va séparer chaque ligne avec

function parserLigne {
# ces lignes sont pour monter le bon déroulement
echo "ligne :" 
echo "$@"
}

while read line  
do
   parserLigne "$line"
done < "$1"

ensuite, on va trouver la première ligne qui commence par >
puis, il faut concaténer les lignes jusqu'à en trouver une qui commence par >
ou la fin du fichier

Hors ligne

#8 Le 13/01/2017, à 14:26

kholo

Re : [Resolu] gestion format fasta

ce premier bash va te compter les séquences et les affichera :
je te met tout en détail pour qu'on sache de quoi on parle
on crée un dossier pour les bash :

mkdir ~/bin

NB au prochain lancement de ton utilisateur bin sera automatiquement ajouté à ton $PATH

on y met le script suivant

cd ~/bin
gedit "parser_fasta.sh"
#!/bin/bash
# ----------------------------------------------
nomlogiciel="$(basename "$0")"
FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# à mettre au début d'un fichier bash
#PID=$$
#FIFO=/tmp/FIFO${PID}
#mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomlogiciel..." ;

#-----------
# Variables
#-----------

# $1 : argument d'entrée du script
# $ft : fichier traité
# $ext : variable correspondant à l'extension du fichier entré en argument



#-------------------------
# Traitement des fichiers
#-------------------------

# Récupération de l'extension
ext=$(echo "${1##*.}")
echo $ext

# Vérification de l'extension
case $ext in
    fas)
    ;;
    fasta)
    ;;
    *)
    
    echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."; exit 1;;
esac

# Création de la variable correspondant au fichier traité
ft="${1%.${ext}}_traité.${ext}"


# Écriture du fichier à traité
a_traiter="$(cat "$1")"
# echo $a_traiter
clear

function countingSeq {
	# (1) counting number of sequences in a fasta file:
	echo "$a_traiter" | grep -c ">"
}
echo "nbre de sequences : $(countingSeq)"

function findSeq {
	echo "$a_traiter" | grep ">"
}
findSeq
exit

et on le rend exécutable

chmod +x "parser_fasta.sh"

maintenant tu crées un fichier fasta avec tes données
met le dans ~/bin pour les tests
pour moi ce sera : genes.fasta

et on lance ce fichier avec le script :

./parser_fasta.sh "genes.fasta"

le retour :

nbre de sequences : 7
>lcl|JN555591.1_prot_AEO27230.1_2 [gene=ND4L] [protein=NADH dehydrogenase subunit 4L] [protein_id=AEO27230.1] [location=440..685]
>lcl|JN555591.1_prot_AEO27231.1_3 [gene=ND2] [protein=NADH dehydrogenase subunit 2] [protein_id=AEO27231.1] [location=1573..2400]
>lcl|JN555591.1_prot_AEO27232.1_4 [gene=CYTB] [protein=cytochrome b] [protein_id=AEO27232.1] [location=2619..3720]
>lcl|JN555591.1_prot_AEO27233.1_5 [gene=COX3] [protein=cytochrome c oxidase subunit III] [protein_id=AEO27233.1] [location=3778..4543]
>lcl|JN555591.1_prot_AEO27234.1_6 [gene=ND4] [protein=NADH dehydrogenase subunit 4] [protein_id=AEO27234.1] [location=4597..5824]
>lcl|JN555591.1_prot_AEO27235.1_7 [gene=ND1] [protein=NADH dehydrogenase subunit 1] [protein_id=AEO27235.1] [location=7327..8203]
>lcl|JN555591.1_prot_AEO27236.1_8 [gene=ATP6] [protein=ATP synthetase subunit 6] [protein_id=AEO27236.1] [location=8327..8902]

ensuite, il faudra mettre ces entêtes dans une variable pour les parser une à une

Hors ligne

#9 Le 13/01/2017, à 16:22

valnovice

Re : [Resolu] gestion format fasta

merciii! ca a bien marché mais elles sont où les séquences des acides aminés? (il n y a plus que les en-tete?) et fichier binaire? ...
bon je vais encore fouiller dans tout ce que tu m'as donné
encore merci

Hors ligne

#10 Le 13/01/2017, à 20:24

kholo

Re : [Resolu] gestion format fasta

valnovice a écrit :

je voudrai avoir le même ordre de gène pour chaque espèce et enlever tous les headers sauf pour la première séquence pour pouvoir concatener

le résultat souhaité pour ton exemple serait :

>lcl|JN555591.1_prot_AEO27230.1_2 [gene=ND4L] [protein=NADH dehydrogenase subunit 4L] [protein_id=AEO27230.1] [location=440..685]
MFVFFIGCLTLLFKWRRLFYVLLSLEFMMMDLFFCFSVVLSGSLFFYFLCFCVIISVLGLLILVSVLKNY
GLDCSFYYEFL
MYFFGVFFFFFLSFINFLTFSVIIWWSIFALMVIYFVFLCKFDGSYVGLVNYFVIQEGLSLCFLFFYGLV
QYIFLMLKCGISPLHFWLFSVCLDLKGVLFVWFLIFQKMPFVPVLLYLGSYVFLLFFLLFGIFFCHFQYY
FLSSLNSILLVSSPESFNWVVLFVICSYYGFFLLIFFYLFFFWFLVSDFLVGYGWELVFVFMNFPLGLVF
MVKYFVLSFFSGFFLVFFFILFFTVVYSYLCFFFWMVFLSCVDFDFCWFGFFVWFVYVFFCFLLV
MEVLFKYLNSMVVVLPSSKSLDLNWNYGSMLGMILFFQIFTGFLLSFFYSNDSLLAFDSVQYIMYDVNYG
WLYRVFHFNGASLFFVFLYLHFFKGLFNSSYRLSLVWLSGVFIIFFVILEAFMGYVLVWAQMSFWACVVI
TSLLSVVPFFGGDLVLWVWGGFTVSGATLKFFFAVHFLLPWFIFVLVVFHLIMLHVTGSTSVLSGFGDYD
KIGFFPYYWLKDSYNLVVWLFFFVFVFSCPFVLGDPEMFLLANCLMSPVHIVPEWYFLFAYAILRAFPNK
FLGVVMLVFSIFVFVIFVFINSYVSVFDVLVDFFVWFFLFVVLLLSWLGQCPVEWPYVFFSVFYSLVYFI
LIFMVFFQGLFFKLLYF
MKHNYHLLSYSGYPFMVFCSVMGLSSSLVIFLKYGVIFGVFFGVFCLFCVVMVWCKDIFMEGLSGYHNFF
VMNGFKYGMVFFIFSEFMFFFGVFWVFFDSSLVPNSELGMSWCPLGIGLINPLGVPLLNTLILLSSAVTV
TWCHNSMLCNYNSFYGLFFTCVLALFFLVFQMLEYDESGFSMSDGIYGSIFYLSTGFHGMHVFFGMIFLF
VNLFRLYMDHFNSDHHLGLEFSIVYWHFVDLIWLFLFVFVYWWSF
MFFLVFSFLVAFFDSVFFCFLVVFFMFLLLNDYSWFGCFFYCDSYFYVLMVFLSFYILFLVLVLEVSVVL
NYMSKLLVFVSVLFFFSSSFVSLYIFYEMSVFPIMLMILGFGSQVEKISAGYYLLFYTIFCSFPFLYVLF
NSYYDLFFVYYDLFLSWESVVFLGLCFLVKFPVYFLHLWLPKAHVEAPTVASMLLAGLLLKLGCVGFVRV
MGSMGFYSVFFWLFLSFLGMVVSSLSCVFQSDVKSLAAYSSVVHMSMFLMVLVSMCIIGKGAGFLMLLGH
GFTSAILFYLIGVFYSCTSSRMVYYFVGFFGGGLFFVFLLCLVFMSNMGVPPSLSFFSEFLAVGSMYYGF
LLGFVVLGVYLFLSFYYSVYIISIGLMGFSFFCFEVFSLGLCVPFLLMMYNVFWLVIFF
MLLFFMLVMVFIFVVFVMQGVAFITLCERHCLGGSQCRIGPNKVSYMGVFQAVFDGIKLMKKEALLGWKV
SSFYFILVPVLAFMISNIYWFVLPFFYSFFTFEYSIVFMMCLVGVFVYCLLFSGIVSKSKYGMLGGLRSS
SQSVSYEVVFSIFLVSLMFEVSCYSFSFAFNFYTLIFVFLYLFLVLAELNRAPFDFSEGESELVSGFNVE
YSSVPFVLLFLSEYGSLLFFSVLFSVLFFSFSMLAIFLFFFLVIFVRSSFPRFRYDKMMGFFWFCLMPLV
LFFLVFSVFYWL
MLSGFLNFSWFNYRLLVFFSLYFLLFFFVVLFFIQEFGGFYEFFNGLGVGFCNYLFGGGDSYFVKFLLVF
VVLVMSFSFYHYLSYTEDVWCNVVFSGSLSMVGLLVSFLVWLMRVRVHWNYVSSSLEVVGLSWWGFLSGV
YHHVSTPVVMLLRVYMNFLIGQGGKWALLVMGFGSSFLLFGFSYFLFFFMS

soit juste la première ligne d’entête conservée et les autres entêtes virées et les lignes de lettres conservées ?

je met ici le bash (parser_fasta.sh) pour obtenir ce résultat :

#!/bin/bash
# ----------------------------------------------
nomlogiciel="$(basename "$0")"
FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# à mettre au début d'un fichier bash
#PID=$$
#FIFO=/tmp/FIFO${PID}
#mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomlogiciel..." ;

#-----------
# Variables
#-----------

# $1 : argument d'entrée du script
# $ft : fichier traité
# $ext : variable correspondant à l'extension du fichier entré en argument

# Pour débugage
if [ ! -z "$1" ]; then
	le_fichier="$1"
else
	# pointer vers le fichier de test
	le_fichier="genes.fasta"
fi
# echo "$le_fichier"

#-------------------------
# Traitement des fichiers
#-------------------------

# Récupération de l'extension
ext=$(echo "${le_fichier##*.}")
echo $ext

# Vérification de l'extension
case $ext in
    fas)
    ;;
    fasta)
    ;;
    *)
	echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."; exit 1;;
esac

# lecture du fichier à traité
a_traiter="$(cat "$le_fichier")"

# Création de la variable correspondant au fichier traité
ft="${le_fichier%.${ext}}_traité.${ext}"

function findSeq {
	echo "$a_traiter" | grep ">"
}
listSequences="$(findSeq)"

function countingSeq {
	# (1) counting number of sequences in a fasta file:
	echo "$listSequences" | grep -c ">"
}
nbreSequences=$(countingSeq)

echo "Séquences :
$listSequences
nbre de sequences : $(countingSeq)"

# reprend l'entête du fichier d'origine
# et initialise le fichier de sortie avec
head -1 "$le_fichier" | tee "$ft"

# maintenant on reprend chaque ligne mais on n'ajoute que les lignes de codes
while read line  
do
	unTest="$(echo "$line" | grep '>')"
	# echo "unTest=	$unTest"
	if [ -z "$unTest" ]; 
	then
		# on ajoute la ligne au fichier de sortie
		echo "$line" | tee -a "$ft"
	# else
		# rien à faire pour le moment
	fi
done < "$le_fichier"

# Pour voir le résultat dans gedit après traitement
# décommenter la prochaine ligne
# gedit "$ft"

exit

Dernière modification par kholo (Le 13/01/2017, à 20:48)

Hors ligne

#11 Le 13/01/2017, à 20:44

valnovice

Re : [Resolu] gestion format fasta

ouiiii! exactement comme cela pour le résultat final ... mais mais ... avant d'obtenir cela, j'aimerai avoir le même ordre de gène, car  comme je l'ai mentionné dans mon premier post, j'ai à peu près 200 espèces portant 14 gènes pour chacune des espèces.... mais pour compliquer le tout, ces gènes ne sont pas dans le même ordre pour chacune des espèces. Je m'explique : dans cet exemple que je t'ai envoyé, l'ordre des gènes est ND4L puis ND2 puis CYTB puis COX3 .... cela est valable pour cette espèce (ou ID) mais pour les 199 autres, cet ordre n'est pas respecté (ça peut etre COX3 puis ND2 puis ND4L ...). Et comme j'ai 200 espèces, tu vois un peu que je ne peux par faire copie-coller à la main des 15 gènes ...

En tout cas, merci d'être aussi réactif, je suis encore dans les biblio pour pouvoir avancer ... merci smile

Hors ligne

#12 Le 13/01/2017, à 20:51

kholo

Re : [Resolu] gestion format fasta

ok...
au lieu de reprendre les gènes et les concaténer "bêtement", il faut d'abord les ranger
et penser à avoir une logique pour la reproduire sur tous les fichiers suivant pour conserver l'ordre de ces gènes...
je vais regarder cela !
pas sûr de pouvoir le sortir ce soir mais d'autres doivent suivre la conversation wink

d'ailleurs, quel est le bon ordre à avoir pour ces gènes ?

Dernière modification par kholo (Le 13/01/2017, à 20:54)

Hors ligne

#13 Le 13/01/2017, à 21:15

valnovice

Re : [Resolu] gestion format fasta

c'est exactement ça, il faut les ranger d'abord en conservant l'ordre des gènes pour toutes les espèces. On pourrait les ranger par ordre alphabetique puis par ordre numérique. J'ai le même en-tête que celui de l'exemple, c'est à dire [gene=COX3] (ou autre bien sûr!)
dans mes 14 gènes, j'ai par exemple gene= MDR1, MDR3,ATP8,ATP6,RPL5,RPL3,RPL2,RPL4,  ... donc on pourrait avoir un enchainement de gènes comme cela ATP6, ATP8, MDR1, MDR3, RPL2, RPL3, RPL4, RPL5 et ainsi de suite.
je te remercie (et ceux qui suivent cette conversation et qui cogitent avec nous wink
je débute,j'ai presque tous les outils mais je m'y perds un peu (en fait beaucoup!)
bonne soirée

Hors ligne

#14 Le 13/01/2017, à 21:59

kholo

Re : [Resolu] gestion format fasta

ok,
il faut passer par des tableaux alors pour avoir un stockage temporaire et traiter chaque entrée puis extraire en ordonnant... ça commence à devenir hardu !

sinon j'ai tout compris mais ya pas de "risques" à perdre la référence de chaque gène ?
... ça doit surtout être pour ton utilisation !/?

Hors ligne

#15 Le 13/01/2017, à 22:22

valnovice

Re : [Resolu] gestion format fasta

en fait, une fois que les gènes sont bien ordonnés pour tout le monde, on enlève leurs en-tête (car normalement on en a plus besoin) mais on garde le premier ">" pour ne pas perdre l'identifiant de l'espèce car leur nom scientifique n'apparait pas.
Tout compte fait, t'as peut être raison (je n'y ai pas pensé), qu'est ce qui se passe si jamais une des espèces n'a pas les 14 gènes (et qu'on ait déjà enlevé leur identifiant/la reference de chaque gène ">") ??
ou sinon il faut faire en plusieurs temps : 1. ordonner 2. verifier et si nécessaire : faire manuellement 3. enlever les en-tete 4. concatener
je croyais vraiment, avec ma naiveté et manque d'experience, qu'on pourrait faire tout ca avec grep/sed/for ... sad
encore merci Kholo

Hors ligne

#16 Le 14/01/2017, à 11:40

kholo

Re : [Resolu] gestion format fasta

dans mon script, tout ce passe là :

# maintenant on reprend chaque ligne mais on n'ajoute que les lignes de codes
while read line  
do
	unTest="$(echo "$line" | grep '>')"
	# echo "unTest=	$unTest"
	if [ -z "$unTest" ]; 
	then
		# on ajoute la ligne au fichier de sortie
		echo "$line" | tee -a "$ft"
	# else
		# rien à faire pour le moment
	fi
done < "$le_fichier"

si tu reprends

	# else
		# rien à faire pour le moment

tu auras la ligne de commentaire que tu peux parser :
cet exemple renvoie la valeur de line dans une fenêtre zenity

function parserCom {
	ligneEnCours="$@"
	zenity --info --title="valeur de line" --text="$ligneEnCours"
}

# reprend l'entête du fichier d'origine
# et initialise le fichier de sortie avec
head -1 "$le_fichier" | tee "$ft"

# maintenant on reprend chaque ligne mais on n'ajoute que les lignes de codes
while read line  
do
	unTest="$(echo "$line" | grep '>')"
	# echo "unTest=	$unTest"
	if [ -z "$unTest" ]; 
	then
		# on ajoute la ligne au fichier de sortie
		echo "$line" | tee -a "$ft"
	else
		# on va parser chaque ligne dans une fonction
		parserCom "$line"
	fi
done < "$le_fichier"

ensuite tu remplaces la ligne zenity de parserCom
pour parser la ligne (dans la variable "$@" ou "$ligneEnCours" wink ) et réutiliser une partie des valeurs

Hors ligne

#17 Le 14/01/2017, à 11:42

kholo

Re : [Resolu] gestion format fasta

je te remet tout le code du script :

#!/bin/bash
# ----------------------------------------------
nomlogiciel="$(basename "$0")"
FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# à mettre au début d'un fichier bash
#PID=$$
#FIFO=/tmp/FIFO${PID}
#mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomlogiciel..." ;

#-----------
# Variables
#-----------

# $1 : argument d'entrée du script
# $ft : fichier traité
# $ext : variable correspondant à l'extension du fichier entré en argument

# Pour débugage
if [ ! -z "$1" ]; then
	le_fichier="$1"
else
	# pointer vers votre fichier de test
	# le_fichier="$HOME/bin/PROGRAMMES/BASH/00 recherches/GENETIC/genes.fasta"
	le_fichier="genes.fasta"
fi
# echo "$le_fichier"

#-------------------------
# Traitement des fichiers
#-------------------------

# Récupération de l'extension
ext=$(echo "${le_fichier##*.}")
echo $ext

# Vérification de l'extension
case $ext in
    fas)
    ;;
    fasta)
    ;;
    *)
	echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."; exit 1;;
esac

# lecture du fichier à traité
a_traiter="$(cat "$le_fichier")"

# Création de la variable correspondant au fichier traité
ft="${le_fichier%.${ext}}_traité.${ext}"

function findSeq {
	echo "$a_traiter" | grep ">"
}
listSequences="$(findSeq)"

function countingSeq {
	# (1) counting number of sequences in a fasta file:
	echo "$listSequences" | grep -c ">"
}
nbreSequences=$(countingSeq)

echo "Séquences :
$listSequences
nbre de sequences : $(countingSeq)"

function parserCom {
	ligneEnCours="$@"
	zenity --info --title="valeur de line" --text="$ligneEnCours"
}

# reprend l'entête du fichier d'origine
# et initialise le fichier de sortie avec
head -1 "$le_fichier" | tee "$ft"

# maintenant on reprend chaque ligne mais on n'ajoute que les lignes de codes
while read line  
do
	unTest="$(echo "$line" | grep '>')"
	# echo "unTest=	$unTest"
	if [ -z "$unTest" ]; 
	then
		# on ajoute la ligne au fichier de sortie
		echo "$line" | tee -a "$ft"
	else
		# on va parser chaque ligne dans une fonction
		parserCom "$line"
	fi
done < "$le_fichier"

# Pour voir le résultat dans gedit après traitement
# décommenter la prochaine ligne
# gedit "$ft"

exit

Hors ligne

#18 Le 14/01/2017, à 12:25

Watael

Re : [Resolu] gestion format fasta

salut,

nomlogiciel="$(basename "$0")" # on peut récupérer le seul nom du script par Développement des paramètres, comme tu le fais plus loin pour l'extension
FONCTION=""
VERSION="alpha"

echo "lancement $nomlogiciel..." ;

if [ ! -z "$1" ]; then #donc, '! -z' = '-n'
    le_fichier="$1"
else # dans le cas de test simple on peut sans souci utiliser des ET et OU logique plutôt qu'un lourd if
    le_fichier="genes.fasta"
fi

ext=$(echo "${le_fichier##*.}") # ext="${le_fichier##*.}
echo $ext
case $ext in # [[ $ext == fas?(ta) ]] || { echo; exit;}
    fas)
        ;;
    fasta)
        ;;
    *)  
        echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."; exit 1;; 
esac
a_traiter="$(cat "$le_fichier")" # UUOC
ft="${le_fichier%.${ext}}_traité.${ext}"
function findSeq { # fonction d'une seule ligne, exécutée une seule fois : inutile
echo "$a_traiter" | grep ">" 
}
listSequences="$(findSeq)"
function countingSeq { # idem
echo "$listSequences" | grep -c ">" 
}
nbreSequences=$(countingSeq)
echo "Séquences :
$listSequences
nbre de sequences : $(countingSeq)" # bah, non : nbre séq : $nbreSequances
function parserCom { # pareil : fonction inutile
ligneEnCours="$@"
zenity --info --title="valeur de line" --text="$ligneEnCours" # avant de dégainer zenity, vérifier que le script est exécuté dans X
}
head -1 "$le_fichier" | tee "$ft" # bof, pourquoi ne pas faire un cat en fin de script, ça ne le ralentirait pas
while read line  
do
    unTest="$(echo "$line" | grep '>')"
    if [ -z "$unTest" ];  
    then
        echo "$line" | tee -a "$ft"
    else
        parserCom "$line"
    fi  
done < "$le_fichier"
exit # attention, il ne faut pas présumer du statut de sortie du script, si quelque chose s'est mal déroulé un exit 0 (par défaut exit retourne 0, donc succès) le masquera.

j'en ai peut-être laissé passer...


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#19 Le 14/01/2017, à 16:17

valnovice

Re : [Resolu] gestion format fasta

Salut! je viens d'allumer mon ordi et je vais voir tout ça de près, merci!!!

Hors ligne

#20 Le 14/01/2017, à 18:36

kholo

Re : [Resolu] gestion format fasta

le script corrigé avec la plupart des annotations de Watael (merci pour les explications)

#!/bin/bash
# ----------------------------------------------
# nomlogiciel="$(basename "$0")" # on peut récupérer le seul nom du script par Développement des paramètres, 
# comme tu le fais plus loin pour l'extension
nomlogiciel="${0##*/}" # cooool !!!

FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# à mettre au début d'un fichier bash
#PID=$$
#FIFO=/tmp/FIFO${PID}
#mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomlogiciel..." ;

#-----------
# Variables
#-----------

# $1 : argument d'entrée du script
# $ft : fichier traité
# $ext : variable correspondant à l'extension du fichier entré en argument

# Pour débugage
if [ -n "$1" ]; then
	le_fichier="$1"
else # dans le cas de test simple on peut sans souci utiliser des ET et OU logique plutôt qu'un lourd if
# oui c'était juste un truc à l'arrache pour ouvrir le test sans le lancer explicitement
	# pointer vers le fichier de test
	le_fichier="genes.fasta"
fi
# echo "le_fichier=$le_fichier"

#-------------------------
# Traitement des fichiers
#-------------------------

# Récupération de l'extension
ext="${le_fichier##*.}"
# echo "ext=$ext"
[[ $ext == fas?(ta) ]] || { echo -e "Le fichier n'est pas un ficher fasta. Sortie."; exit;}

# Création de la variable correspondant au fichier traité
ft="${le_fichier%.${ext}}_traité.${ext}"

# Cette partie est optionnelle (juste pour information)
# lecture du fichier à traité
a_traiter="$(cat "$le_fichier")" # UUOC # une autre façon ?
listSequences="$(echo "$a_traiter" | grep ">")"
echo "Séquences :
$listSequences
nbre de sequences : $(echo "$listSequences" | grep -c ">")"
# fin de la partie optionnelle

function parserCom {
	# cette fonction va permettre de coder la récupération des valeurs souhaitées
	ligneEnCours="$@"
	zenity --info --title="valeur de line" --text="$ligneEnCours" # choix de zenity : oui j'aurais pu laisser un écho
}

# reprend l'entête du fichier d'origine
# et initialise le fichier de sortie avec    
head -1 "$le_fichier" | tee "$ft"

# maintenant on reprend chaque ligne mais on n'ajoute que les lignes de codes
while read line  
do
	unTest="$(echo "$line" | grep '>')"
	# echo "unTest=	$unTest"
	if [ -z "$unTest" ]; 
	then
		# on ajoute la ligne au fichier de sortie
		echo "$line" | tee -a "$ft"
	else
		# on va parser chaque ligne dans une fonction
		parserCom "$line"
	fi
done < "$le_fichier"

# Pour voir le résultat dans gedit après traitement
# décommenter la prochaine ligne
# gedit "$ft"

exit 0

j'ai laissé passer 2 - 3 trucs wink
le but est d'avoir le code adaptable...
quelque chose me dit que la récupération du code de chaque gène est à prévoir !

Dernière modification par kholo (Le 14/01/2017, à 18:51)

Hors ligne

#21 Le 14/01/2017, à 19:12

Watael

Re : [Resolu] gestion format fasta

a_traiter="$(cat "$le_fichier")" # UUOC # une autre façon ?
listSequences="$(echo "$a_traiter" | grep ">")"

oui :

listSequences=$(grep '>' "$le_fichier")

ou directement un petit bout de awk :

 awk '/^>/{ ar[++n]=$0}; END{print "sequences :"; for (i=1;i<=n;i++)print ar[i]; print "nb Seq : " n}' "$le_fichier"

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#22 Le 14/01/2017, à 21:30

kholo

Re : [Resolu] gestion format fasta

pour bien finir la semaine, de quoi parser les crochets :

function parserCom {
	ligneEnCours="$@"
	zenity --info --title="valeur de line" --text="$ligneEnCours
$(echo $ligneEnCours | awk -vRS="]" -vFS="[" '{print $2}')"
}

pour la ligne

>lcl|JN555591.1_prot_AEO27230.1_2 [gene=ND4L] [protein=NADH dehydrogenase subunit 4L] [protein_id=AEO27230.1] [location=440..685]

renverra :

gene=ND4L
protein=NADH dehydrogenase subunit 4L
protein_id=AEO27230.1
location=440..685

ensuite on peut récupérer les noms des gènes...
alors, on en fait quoi ?
rangement des suites dans l'ordre alphabétique des gènes... comme dit plus haut ?

Hors ligne

#23 Le 16/01/2017, à 11:22

valnovice

Re : [Resolu] gestion format fasta

bonjour à tous,
merci pour vos réponses respectives, j'ai fait et refait mais il y a un truc qui ne va pas...ca me donne des messages d'erreur (je rappelle que je suis une vraie débutante hmm mais oui mais oui j'essaie j'y travaille avec bcp d'effort wink wink
je vais relire encore les scripts au cas où il y a un truc que j'ai omis
en tout cas, merci beaucoup pour vos réponses

Hors ligne

#24 Le 16/01/2017, à 15:04

kholo

Re : [Resolu] gestion format fasta

salut,
si tu as suivi mon tuto d'install du post #9,
commences par aller dans le dossier bin

cd ~/bin

puis lance le script

./parser_fasta.sh "genes.fasta"

puis donne les retours
----------------------------------------------------------------------

ensuite tu modifieras le script au fur et à mesure des versions et améliorations

j'en suis là (attention à re-tester)
le script crée des tableaux (arrays), il organise la suite des noms des gènes
puis relit chaque gène ordonné pour concaténer les séquences
et écrit le résultat dans un fichier _traité.
(je ne sais pas si j'utilise le bon vocabulaire)
NB : j'ai laissé des traces inutiles comme la fonction parserCom
et ça doit être un peu lourdingue

#!/bin/bash
# ----------------------------------------------
# nomlogiciel="$(basename "$0")" # on peut récupérer le seul nom du script par Développement des paramètres, 
# comme tu le fais plus loin pour l'extension
nomlogiciel="${0##*/}"

FONCTION="Concatener des séquences de gènes d'une espèces et ne conserve que le premier commentaire"
VERSION="alpha"
# NOTES DE VERSIONS
# https://forum.ubuntu-fr.org/viewtopic.php?id=2003118
# merci Watael pour les conseils :
# https://forum.ubuntu-fr.org/viewtopic.php?pid=21662278#p21662278
# ----------------------------------------------
# à mettre au début d'un fichier bash
#PID=$$
#FIFO=/tmp/FIFO${PID}
#mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomlogiciel..." ; 

#-----------
# Variables
#-----------

# $1 : argument d'entrée du script
# $ft : fichier traité
# $ext : variable correspondant à l'extension du fichier entré en argument

# Pour débugage
if [ -n "$1" ]; then
	le_fichier="$1"
else # dans le cas de test simple on peut sans souci utiliser des ET et OU logique plutôt qu'un lourd if
	# pointer vers le fichier de test
	le_fichier="genes.fasta"
fi
# echo "le_fichier=$le_fichier"
numGeneEnCours=0
nomGeneEnCours=""
NumGene=0
declare -A NomGene # array
declare -A SeqGene # array

#-------------------------
# Traitement des fichiers
#-------------------------

# Récupération de l'extension
ext="${le_fichier##*.}"
# echo "ext=$ext"
[[ $ext == fas?(ta) ]] || { echo -e "Le fichier n'est pas un ficher fasta. Sortie."; exit;}

# Création de la variable correspondant au fichier traité
ft="${le_fichier%.${ext}}_traité.${ext}"

# lecture du fichier à traité
# a_traiter="$(cat "$le_fichier")" # UUOC
# listSequences="$(echo "$a_traiter" | grep ">")"
# une autre façon :
# listSequences=$(grep '>' "$le_fichier")
# ou directement un petit bout de awk :
# awk '/^>/{ ar[++n]=$0}; END{print "sequences :"; for (i=1;i<=n;i++)print ar[i]; print "nb Seq : " n}' "$le_fichier"
listSequences=$(grep '>' "$le_fichier")
nbreSequences=$(echo "$listSequences" | grep -c ">")
# echo "nbre de sequences : $nbreSequences
# Séquences :
# $listSequences"

# reprend l'entête du fichier d'origine
# et initialise le fichier de sortie avec    
head -1 "$le_fichier" | tee "$ft"

# NumGene 
# NomGene 
# SeqGene 

function parserCom {
	ligneEnCours="$@"
	infosparsees="$(echo $ligneEnCours | cut -d "[" -f2 | cut -d "]" -f1)"
	nomGeneEnCours="${infosparsees#*gene=}"
	# zenity --info --title="valeur de line" --text="$ligneEnCours \n le gène est : $nomGeneEnCours"
}

# maintenant on reprend chaque ligne mais on n'ajoute que les lignes de codes
while read ligneEnCours  
do
	unTest="$(echo "$ligneEnCours" | grep '>')"
	# echo "unTest=	$unTest"
	if [ -z "$unTest" ]; 
	then
		SeqGene[$NumGene]="${SeqGene[$NumGene]}
$ligneEnCours"
	else
		((NumGene++))
		infosparsees="$(echo $ligneEnCours | cut -d "[" -f2 | cut -d "]" -f1)"
		NomGene[$NumGene]="${infosparsees#*gene=}"
		# echo ${NomGene[$NumGene]}
	fi
done < "$le_fichier"

for (( i=1; i<=nbreSequences; i++ )) ;
do 
	echo "$i --------------------------------------"
	echo NomGene ${NomGene[$i]}
	echo ${SeqGene[$i]}
done

NomGeneOrdonne=( $(
    for el in "${NomGene[@]}"
    do
        echo "$el"
    done | sort) )

echo "--------------------------------------"
echo "la séquence 
${NomGene[@]}
est ordonnées :
${NomGeneOrdonne[@]}"
echo "--------------------------------------"

# clear

for (( i=0; i<=nbreSequences-1; i++ )) ;
do 
	echo "--------------------------------------"
	echo "$i on test ${NomGeneOrdonne[$i]}"
	geneB="${NomGeneOrdonne[$i]}"

	for (( j=1; j<=nbreSequences; j++ )) ;
    do
		geneA="${NomGene[$j]}"
        if [ "$geneB" = "$geneA" ] ; then
		echo "${NomGeneOrdonne[$i]} = ${NomGeneOrdonne[$j]} ?"
			echo "OUIIIIII" "i= $i ; j= $j" "$geneA = $geneB"
			# echo ${SeqGene[$j]}
			SeqOrdonnees="${SeqOrdonnees} ${SeqGene[$j]}"
		# else
			# echo "NOOOON"
        fi
    done
done

echo "--------------------------------------"
echo "on écrit la suite dans le fichier"
echo "$SeqOrdonnees" | tee -a "$ft"
echo "--------------------------------------"

# Pour voir le résultat dans gedit après traitement
# décommenter la prochaine ligne
# gedit "$ft"

exit 0

ça me sort ça en fichier "genes_traité.fasta"
(à voir ce qu'on fait du saut de ligne au début et de la façon de concaténer les lignes de séquences à ton idée)
NB : on peut aussi parser la ligne de com pour n'avoir que des valeurs génériques à l'espèce ; et non le com bête de la première séquence

>lcl|JN555591.1_prot_AEO27230.1_2 [gene=ND4L] [protein=NADH dehydrogenase subunit 4L] [protein_id=AEO27230.1] [location=440..685]
 
MLSGFLNFSWFNYRLLVFFSLYFLLFFFVVLFFIQEFGGFYEFFNGLGVGFCNYLFGGGDSYFVKFLLVF
VVLVMSFSFYHYLSYTEDVWCNVVFSGSLSMVGLLVSFLVWLMRVRVHWNYVSSSLEVVGLSWWGFLSGV
YHHVSTPVVMLLRVYMNFLIGQGGKWALLVMGFGSSFLLFGFSYFLFFFMS 
MKHNYHLLSYSGYPFMVFCSVMGLSSSLVIFLKYGVIFGVFFGVFCLFCVVMVWCKDIFMEGLSGYHNFF
VMNGFKYGMVFFIFSEFMFFFGVFWVFFDSSLVPNSELGMSWCPLGIGLINPLGVPLLNTLILLSSAVTV
TWCHNSMLCNYNSFYGLFFTCVLALFFLVFQMLEYDESGFSMSDGIYGSIFYLSTGFHGMHVFFGMIFLF
VNLFRLYMDHFNSDHHLGLEFSIVYWHFVDLIWLFLFVFVYWWSF 
MEVLFKYLNSMVVVLPSSKSLDLNWNYGSMLGMILFFQIFTGFLLSFFYSNDSLLAFDSVQYIMYDVNYG
WLYRVFHFNGASLFFVFLYLHFFKGLFNSSYRLSLVWLSGVFIIFFVILEAFMGYVLVWAQMSFWACVVI
TSLLSVVPFFGGDLVLWVWGGFTVSGATLKFFFAVHFLLPWFIFVLVVFHLIMLHVTGSTSVLSGFGDYD
KIGFFPYYWLKDSYNLVVWLFFFVFVFSCPFVLGDPEMFLLANCLMSPVHIVPEWYFLFAYAILRAFPNK
FLGVVMLVFSIFVFVIFVFINSYVSVFDVLVDFFVWFFLFVVLLLSWLGQCPVEWPYVFFSVFYSLVYFI
LIFMVFFQGLFFKLLYF 
MLLFFMLVMVFIFVVFVMQGVAFITLCERHCLGGSQCRIGPNKVSYMGVFQAVFDGIKLMKKEALLGWKV
SSFYFILVPVLAFMISNIYWFVLPFFYSFFTFEYSIVFMMCLVGVFVYCLLFSGIVSKSKYGMLGGLRSS
SQSVSYEVVFSIFLVSLMFEVSCYSFSFAFNFYTLIFVFLYLFLVLAELNRAPFDFSEGESELVSGFNVE
YSSVPFVLLFLSEYGSLLFFSVLFSVLFFSFSMLAIFLFFFLVIFVRSSFPRFRYDKMMGFFWFCLMPLV
LFFLVFSVFYWL 
MYFFGVFFFFFLSFINFLTFSVIIWWSIFALMVIYFVFLCKFDGSYVGLVNYFVIQEGLSLCFLFFYGLV
QYIFLMLKCGISPLHFWLFSVCLDLKGVLFVWFLIFQKMPFVPVLLYLGSYVFLLFFLLFGIFFCHFQYY
FLSSLNSILLVSSPESFNWVVLFVICSYYGFFLLIFFYLFFFWFLVSDFLVGYGWELVFVFMNFPLGLVF
MVKYFVLSFFSGFFLVFFFILFFTVVYSYLCFFFWMVFLSCVDFDFCWFGFFVWFVYVFFCFLLV 
MFFLVFSFLVAFFDSVFFCFLVVFFMFLLLNDYSWFGCFFYCDSYFYVLMVFLSFYILFLVLVLEVSVVL
NYMSKLLVFVSVLFFFSSSFVSLYIFYEMSVFPIMLMILGFGSQVEKISAGYYLLFYTIFCSFPFLYVLF
NSYYDLFFVYYDLFLSWESVVFLGLCFLVKFPVYFLHLWLPKAHVEAPTVASMLLAGLLLKLGCVGFVRV
MGSMGFYSVFFWLFLSFLGMVVSSLSCVFQSDVKSLAAYSSVVHMSMFLMVLVSMCIIGKGAGFLMLLGH
GFTSAILFYLIGVFYSCTSSRMVYYFVGFFGGGLFFVFLLCLVFMSNMGVPPSLSFFSEFLAVGSMYYGF
LLGFVVLGVYLFLSFYYSVYIISIGLMGFSFFCFEVFSLGLCVPFLLMMYNVFWLVIFF 
MFVFFIGCLTLLFKWRRLFYVLLSLEFMMMDLFFCFSVVLSGSLFFYFLCFCVIISVLGLLILVSVLKNY
GLDCSFYYEFL

Hors ligne

#25 Le 16/01/2017, à 16:04

Watael

Re : [Resolu] gestion format fasta

salut,

j'ai peut-être raté un truc ?

$ cat gene.fasta 
>lcl|JN555591.1_prot_AEO27230.1_2 [gene=ND4L] [protein=NADH dehydrogenase subunit 4L] [protein_id=AEO27230.1] [location=440..685]
MFVFFIGCLTLLFKWRRLFYVLLSLEFMMMDLFFCFSVVLSGSLFFYFLCFCVIISVLGLLILVSVLKNY
GLDCSFYYEFL
>lcl|JN555591.1_prot_AEO27231.1_3 [gene=ND2] [protein=NADH dehydrogenase subunit 2] [protein_id=AEO27231.1] [location=1573..2400]
MYFFGVFFFFFLSFINFLTFSVIIWWSIFALMVIYFVFLCKFDGSYVGLVNYFVIQEGLSLCFLFFYGLV
QYIFLMLKCGISPLHFWLFSVCLDLKGVLFVWFLIFQKMPFVPVLLYLGSYVFLLFFLLFGIFFCHFQYY
FLSSLNSILLVSSPESFNWVVLFVICSYYGFFLLIFFYLFFFWFLVSDFLVGYGWELVFVFMNFPLGLVF
MVKYFVLSFFSGFFLVFFFILFFTVVYSYLCFFFWMVFLSCVDFDFCWFGFFVWFVYVFFCFLLV
>lcl|JN555591.1_prot_AEO27232.1_4 [gene=CYTB] [protein=cytochrome b] [protein_id=AEO27232.1] [location=2619..3720]
MEVLFKYLNSMVVVLPSSKSLDLNWNYGSMLGMILFFQIFTGFLLSFFYSNDSLLAFDSVQYIMYDVNYG
WLYRVFHFNGASLFFVFLYLHFFKGLFNSSYRLSLVWLSGVFIIFFVILEAFMGYVLVWAQMSFWACVVI
TSLLSVVPFFGGDLVLWVWGGFTVSGATLKFFFAVHFLLPWFIFVLVVFHLIMLHVTGSTSVLSGFGDYD
KIGFFPYYWLKDSYNLVVWLFFFVFVFSCPFVLGDPEMFLLANCLMSPVHIVPEWYFLFAYAILRAFPNK
FLGVVMLVFSIFVFVIFVFINSYVSVFDVLVDFFVWFFLFVVLLLSWLGQCPVEWPYVFFSVFYSLVYFI
LIFMVFFQGLFFKLLYF
>lcl|JN555591.1_prot_AEO27233.1_5 [gene=COX3] [protein=cytochrome c oxidase subunit III] [protein_id=AEO27233.1] [location=3778..4543]
MKHNYHLLSYSGYPFMVFCSVMGLSSSLVIFLKYGVIFGVFFGVFCLFCVVMVWCKDIFMEGLSGYHNFF
VMNGFKYGMVFFIFSEFMFFFGVFWVFFDSSLVPNSELGMSWCPLGIGLINPLGVPLLNTLILLSSAVTV
TWCHNSMLCNYNSFYGLFFTCVLALFFLVFQMLEYDESGFSMSDGIYGSIFYLSTGFHGMHVFFGMIFLF
VNLFRLYMDHFNSDHHLGLEFSIVYWHFVDLIWLFLFVFVYWWSF
>lcl|JN555591.1_prot_AEO27234.1_6 [gene=ND4] [protein=NADH dehydrogenase subunit 4] [protein_id=AEO27234.1] [location=4597..5824]
MFFLVFSFLVAFFDSVFFCFLVVFFMFLLLNDYSWFGCFFYCDSYFYVLMVFLSFYILFLVLVLEVSVVL
NYMSKLLVFVSVLFFFSSSFVSLYIFYEMSVFPIMLMILGFGSQVEKISAGYYLLFYTIFCSFPFLYVLF
NSYYDLFFVYYDLFLSWESVVFLGLCFLVKFPVYFLHLWLPKAHVEAPTVASMLLAGLLLKLGCVGFVRV
MGSMGFYSVFFWLFLSFLGMVVSSLSCVFQSDVKSLAAYSSVVHMSMFLMVLVSMCIIGKGAGFLMLLGH
GFTSAILFYLIGVFYSCTSSRMVYYFVGFFGGGLFFVFLLCLVFMSNMGVPPSLSFFSEFLAVGSMYYGF
LLGFVVLGVYLFLSFYYSVYIISIGLMGFSFFCFEVFSLGLCVPFLLMMYNVFWLVIFF
>lcl|JN555591.1_prot_AEO27235.1_7 [gene=ND1] [protein=NADH dehydrogenase subunit 1] [protein_id=AEO27235.1] [location=7327..8203]
MLLFFMLVMVFIFVVFVMQGVAFITLCERHCLGGSQCRIGPNKVSYMGVFQAVFDGIKLMKKEALLGWKV
SSFYFILVPVLAFMISNIYWFVLPFFYSFFTFEYSIVFMMCLVGVFVYCLLFSGIVSKSKYGMLGGLRSS
SQSVSYEVVFSIFLVSLMFEVSCYSFSFAFNFYTLIFVFLYLFLVLAELNRAPFDFSEGESELVSGFNVE
YSSVPFVLLFLSEYGSLLFFSVLFSVLFFSFSMLAIFLFFFLVIFVRSSFPRFRYDKMMGFFWFCLMPLV
LFFLVFSVFYWL
>lcl|JN555591.1_prot_AEO27236.1_8 [gene=ATP6] [protein=ATP synthetase subunit 6] [protein_id=AEO27236.1] [location=8327..8902]
MLSGFLNFSWFNYRLLVFFSLYFLLFFFVVLFFIQEFGGFYEFFNGLGVGFCNYLFGGGDSYFVKFLLVF
VVLVMSFSFYHYLSYTEDVWCNVVFSGSLSMVGLLVSFLVWLMRVRVHWNYVSSSLEVVGLSWWGFLSGV
YHHVSTPVVMLLRVYMNFLIGQGGKWALLVMGFGSSFLLFGFSYFLFFFMS
$ 
$ read header < gene.fasta; echo "$header"; while read info gene reste; do [[ $info == '>'* ]] && { Gene=$gene; n=0;} || echo "$Gene$((n++))=$info"; done < gene.fasta| sort -k1,1 | cut -d '=' -f3
>lcl|JN555591.1_prot_AEO27230.1_2 [gene=ND4L] [protein=NADH dehydrogenase subunit 4L] [protein_id=AEO27230.1] [location=440..685]
MLSGFLNFSWFNYRLLVFFSLYFLLFFFVVLFFIQEFGGFYEFFNGLGVGFCNYLFGGGDSYFVKFLLVF
VVLVMSFSFYHYLSYTEDVWCNVVFSGSLSMVGLLVSFLVWLMRVRVHWNYVSSSLEVVGLSWWGFLSGV
YHHVSTPVVMLLRVYMNFLIGQGGKWALLVMGFGSSFLLFGFSYFLFFFMS
MKHNYHLLSYSGYPFMVFCSVMGLSSSLVIFLKYGVIFGVFFGVFCLFCVVMVWCKDIFMEGLSGYHNFF
VMNGFKYGMVFFIFSEFMFFFGVFWVFFDSSLVPNSELGMSWCPLGIGLINPLGVPLLNTLILLSSAVTV
TWCHNSMLCNYNSFYGLFFTCVLALFFLVFQMLEYDESGFSMSDGIYGSIFYLSTGFHGMHVFFGMIFLF
VNLFRLYMDHFNSDHHLGLEFSIVYWHFVDLIWLFLFVFVYWWSF
MEVLFKYLNSMVVVLPSSKSLDLNWNYGSMLGMILFFQIFTGFLLSFFYSNDSLLAFDSVQYIMYDVNYG
WLYRVFHFNGASLFFVFLYLHFFKGLFNSSYRLSLVWLSGVFIIFFVILEAFMGYVLVWAQMSFWACVVI
TSLLSVVPFFGGDLVLWVWGGFTVSGATLKFFFAVHFLLPWFIFVLVVFHLIMLHVTGSTSVLSGFGDYD
KIGFFPYYWLKDSYNLVVWLFFFVFVFSCPFVLGDPEMFLLANCLMSPVHIVPEWYFLFAYAILRAFPNK
FLGVVMLVFSIFVFVIFVFINSYVSVFDVLVDFFVWFFLFVVLLLSWLGQCPVEWPYVFFSVFYSLVYFI
LIFMVFFQGLFFKLLYF
MLLFFMLVMVFIFVVFVMQGVAFITLCERHCLGGSQCRIGPNKVSYMGVFQAVFDGIKLMKKEALLGWKV
SSFYFILVPVLAFMISNIYWFVLPFFYSFFTFEYSIVFMMCLVGVFVYCLLFSGIVSKSKYGMLGGLRSS
SQSVSYEVVFSIFLVSLMFEVSCYSFSFAFNFYTLIFVFLYLFLVLAELNRAPFDFSEGESELVSGFNVE
YSSVPFVLLFLSEYGSLLFFSVLFSVLFFSFSMLAIFLFFFLVIFVRSSFPRFRYDKMMGFFWFCLMPLV
LFFLVFSVFYWL
MYFFGVFFFFFLSFINFLTFSVIIWWSIFALMVIYFVFLCKFDGSYVGLVNYFVIQEGLSLCFLFFYGLV
QYIFLMLKCGISPLHFWLFSVCLDLKGVLFVWFLIFQKMPFVPVLLYLGSYVFLLFFLLFGIFFCHFQYY
FLSSLNSILLVSSPESFNWVVLFVICSYYGFFLLIFFYLFFFWFLVSDFLVGYGWELVFVFMNFPLGLVF
MVKYFVLSFFSGFFLVFFFILFFTVVYSYLCFFFWMVFLSCVDFDFCWFGFFVWFVYVFFCFLLV
MFFLVFSFLVAFFDSVFFCFLVVFFMFLLLNDYSWFGCFFYCDSYFYVLMVFLSFYILFLVLVLEVSVVL
NYMSKLLVFVSVLFFFSSSFVSLYIFYEMSVFPIMLMILGFGSQVEKISAGYYLLFYTIFCSFPFLYVLF
NSYYDLFFVYYDLFLSWESVVFLGLCFLVKFPVYFLHLWLPKAHVEAPTVASMLLAGLLLKLGCVGFVRV
MGSMGFYSVFFWLFLSFLGMVVSSLSCVFQSDVKSLAAYSSVVHMSMFLMVLVSMCIIGKGAGFLMLLGH
GFTSAILFYLIGVFYSCTSSRMVYYFVGFFGGGLFFVFLLCLVFMSNMGVPPSLSFFSEFLAVGSMYYGF
LLGFVVLGVYLFLSFYYSVYIISIGLMGFSFFCFEVFSLGLCVPFLLMMYNVFWLVIFF
MFVFFIGCLTLLFKWRRLFYVLLSLEFMMMDLFFCFSVVLSGSLFFYFLCFCVIISVLGLLILVSVLKNY
GLDCSFYYEFL

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne