#1 Le 16/11/2011, à 21:22
- link5192
[Résolu ] fichier txt au format Fasta
Bonjour à tous ^^
Voilà en cours de Bioinformatique on utilise souvent le format FASTA pour les séquences d'acides nucléiques. Pour information, c'est un fichier texte où la séquence d'ADN est linéaire, c'est à dire qu'il n'y a aucun espaces ni retour à la ligne. Notre professeur nous avait donné une macro pour faire sa sur word mais on ne peut pas passer d'une macro word à une macro openoffice
C'est pourquoi je demande donc à ceux qui s'y connaisse en bioinformatique si il existe une solution pour mon problème...
Merci d'avance à tous.
Dernière modification par link5192 (Le 20/11/2011, à 16:49)
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#2 Le 18/11/2011, à 21:34
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Salut link5192,
Explicite un peu plus ton problème : que faisait exactement ta macro ?
Sinon, pour info :
[un fichier] FASTA [...] est un fichier texte où la séquence d'ADN est linéaire, c'est à dire qu'il n'y a aucun espaces ni retour à la ligne.
C'est effectivement un fichier texte mais il est constitué d'au moins deux lignes :
- 1ère ligne composée d'un chevron suivi du nom de la séquence
- 2ème ligne composée de la séquence (nucléique, protéique) qui peut être sur une seule ligne ou contenir des retours à la ligne (classiquement tous les 60 caractères)
En tout cas, un prof de bioinfo qui n'est pas sous linux, c'est un peu comme un fan d'Apple qui tourne sur PC, c'est rare... En plus faire ça avec un macro Word, il y a plus élégant pour traiter du texte brut. D'ailleurs, petite question : la ligne de commande te fait-elle peur ?
A+
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#3 Le 20/11/2011, à 02:09
- link5192
Re : [Résolu ] fichier txt au format Fasta
Salut
Voici la macro, En gros on prend une séquence qui nous intéresse sur le site ncbi par exemple avec un vecteur de pUC 19. On copie coller cette séquence dans word. Ensuite on là selectionne et on utilise la macro. La macro à pour effet de supprimer les retour à la ligne à la fin de chaque ligne car si tu cherche une séquence précise avec CTRL + F et qu'elle est coupé par un retour, t'aura beau chercher, tu vas rien trouver....
Sub Fasta()
Dim sequence, seqfasta, lettre, newlettre As String, Longueur, compteur As Long
If Selection.Type = wdSelectionIP Then MsgBox ("Pas de sélection !"): Exit Sub
sequence = Selection.Text
Longueur = Len(sequence)
seqfasta = ""
For compteur = 1 To Longueur Step 1
lettre = Mid$(sequence, compteur, 1)
Select Case lettre
Case Chr(13), Chr(11)
newlettre = ""
Case " ", ".", "-"
newlettre = ""
Case "0" To "9"
newlettre = ""
Case Else
newlettre = lettre
End Select
seqfasta = seqfasta & newlettre
Next
Selection.Text = seqfasta
End Sub
En tout cas, un prof de bioinfo qui n'est pas sous linux, c'est un peu comme un fan d'Apple qui tourne sur PC, c'est rare... En plus faire ça avec un macro Word, il y a plus élégant pour traiter du texte brut
Oui je suis bien d'accord avec toi mais que veut tu .... les ordis du lycée tournent tous sous windows xp donc pas moyen de trouver l'ombre d'un logiciel libre à part chez soi ^^
D'ailleurs, petite question : la ligne de commande te fait-elle peur ?
non enfin sauf si tu me fait faire des trucs de ouf ^^
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#4 Le 20/11/2011, à 14:17
- ftarkin
Re : [Résolu ] fichier txt au format Fasta
Heu pq tu fais pas ca en perl, ou bien avec le JaMWB (Java Molecular WorkBench) ?
Avoir une macro word en bioinfo c'est gros quand meme. T'es dans quelle fac ??
Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64
Hors ligne
#5 Le 20/11/2011, à 14:43
- link5192
Re : [Résolu ] fichier txt au format Fasta
Je suis pas en fac je suis en BTS biotechnologie.
Les séquences on en a pas besoin pour faire de grosse choses. In s'en sert pour trouver des amorces ou des sites de restriction mais c'est tout. Donc je pense que mon prof trouve que au moins avec une macro word on se prend pas la tête.
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#6 Le 20/11/2011, à 14:58
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Salut,
@ftarkin:
Heu pq tu fais pas ca en perl, ou bien avec le JaMWB (Java Molecular WorkBench)
Ca serait pas mal mais ce n'est pas facile de s'y mettre quand on n'a pas forcément vu de la programmation (ce que je présume peut-être à tort être le cas de link5192.
Avoir une macro word en bioinfo c'est gros quand meme.
C'est surtout pas génial. La macro a énormément d'inconvénients et très peu d'avantages. Ce genre de petit programme ne fonctionne que dans des environnement précis comme Word par exemple et n'est pas transposable facilement sur d'autres logiciels (amusez-vous a utilisé une macro Word dans Writter...). En plus, ce n'est pas très élégant quand on fait de la bioinfo (même si on peut partir du principe qu'il n'y a pas de mauvaise méthode tant qu'on arrive à ses fins).
T'es dans quelle fac ??
link5192 est dans un lycée (je présume en BTS).
@link5192:
Salut
Voici la macro, En gros on prend une séquence qui nous intéresse sur le site ncbi par exemple avec un vecteur de pUC 19. On copie coller cette séquence dans word. Ensuite on là selectionne et on utilise la macro. La macro à pour effet de supprimer les retour à la ligne à la fin de chaque ligne car si tu cherche une séquence précise avec CTRL + F et qu'elle est coupé par un retour, t'aura beau chercher, tu vas rien trouver....
OK pour le fonctionnement mais je n'y connais rien en macro (je ne m'y suis jamais intéressé pour les raisons sus-citées).
vaderf a écrit :En tout cas, un prof de bioinfo qui n'est pas sous linux, c'est un peu comme un fan d'Apple qui tourne sur PC, c'est rare... En plus faire ça avec un macro Word, il y a plus élégant pour traiter du texte brut
Oui je suis bien d'accord avec toi mais que veut tu .... les ordis du lycée tournent tous sous windows xp donc pas moyen de trouver l'ombre d'un logiciel libre à part chez soi ^^
Tu as fait le bon choix en étant sous linux : c'est effectivement libre (ce qui n'est pas négligeable) et il y a énormément d'outils disponibles pour la bioinfo (qui sont assez embêtant à installer ou qui ne sont pas du tout dispo sous Windows).
vaderf a écrit :D'ailleurs, petite question : la ligne de commande te fait-elle peur ?
non enfin sauf si tu me fait faire des trucs de ouf ^^
J'espère que ce qui suis ne va pas te faire trop peur.
#!/bin/bash
# titre : Linéarisation des fichiers FASTA
# version : 0.0
# auteur : Vaderf <vaderf à free point fr>
# date de création : 2011-11-20
# date de modification :
# licence : GPL v2
#-----------
# Objectifs
#-----------
# Supprimer les retours à la ligne d'un fichier fasta
#-----------
# 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#*.}")
# Vérification de l'extension
if [[ "$ext" != "fas" || "$ext" != "fasta" ]]; then
echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."
exit 1
fi
# Création de la variable correspondant au fichier traité
ft="${1%.${ext}}_traité.${ext}"
# Écriture du fichier traité
sed "1p" "$1" > "$ft"
cat "$1" | sed '1d' | tr -d "\n\r" >> "$ft"
exit 0
En fait, il s'agit d'un petit script en bash. Il faut que tu le copies dans un fichier texte et que tu le rendes exécutable :
chmod u+x ton_script.sh
Pour l'utiliser, c'est tout simple :
./ton_script.sh le_fichier_fasta
Le fichier fasta est rentré en argument et doit contenir qu'une seule séquence (je n'ai pas fait le script pour tenir compte de plusieurs séquence.
Les outils utilisés dans ce script sont principalement sed (string editor, très utile) et tr. J'ai détaillé les différentes étapes du scripts. Si tu as des questions n'hésite pas.
A+
EDIT :
Je suis pas en fac je suis en BTS biotechnologie.
J'avais raison ;).
Donc je pense que mon prof trouve que au moins avec une macro word on se prend pas la tête.
Encore une fois pour les mêmes raisons que j'ai citées au dessus, je ne pense pas que ton prof ait raison (si tant est que ce soit la raison pour laquelle il vous fait utiliser une macro Word). Mais bon, en même temps sous Windows, ça devient tout de suis un peu plus compliqué. En revanche, tu peux toujours lui suggérer de transcrire sa macro sous un langage compatible avec Writter (histoire d'augmenter la portabilité).
Dernière modification par Vaderf (Le 20/11/2011, à 15:54)
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#7 Le 20/11/2011, à 15:49
- link5192
Re : [Résolu ] fichier txt au format Fasta
Ok je te remercie mais il y a quelque truc que je ne comprend pas :
# Vérification de l'extension
if [[ "$ext" != "fas" || "$ext" != "fasta" ]]; then
echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."
exit 1
fi
Donc sa si j'ai bien compris est une fonction permettant de vérifier que le fichier est bien en *.fasta ou *.fas .... Le problème c'est que je pars en générale d'un fichier txt (je n'ai jamais utilisé les documents en .fasta). Enfin soit, j'ai quand même renommer mom fichier sequence.txt en sequence.fasta . Le problème c'est que sa me met toujours "le fichier n'est pas un fichier fasta. la procédure est abandonnée."
Du coup pour esssayer j'ai supprimé la fonctions de vérification et j'ai lancé le script. J'obtiens donc bien un fichier txt "traité" mais à l'intérieur j'ai la 1er ligne de copier à l'identique mais encore tout les sauts de ligne
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#8 Le 20/11/2011, à 16:28
- pingouinux
Re : [Résolu ] fichier txt au format Fasta
Bonjour,
@Vaderf #6 :
Ton script est clair et bien documenté. Juste quelques remarques :
Peut-être ## au lieu de #, au cas où le nom du fichier serait du style : mon.fichier.fas
ext=$(echo "${1##*.}")
&& au lieu de ||
# Vérification de l'extension
if [[ "$ext" != "fas" && "$ext" != "fasta" ]]; then
sed -n
sed -n "1p" "$1" > "$ft"
Il faudrait peut-être aussi rajouter un echo juste avant la fin pour avoir le dernier \n
echo >> "$ft"
exit 0
Cordialement
Hors ligne
#9 Le 20/11/2011, à 16:40
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
@link5192
Ok je te remercie mais il y a quelque truc que je ne comprend pas :
# Vérification de l'extension if [[ "$ext" != "fas" || "$ext" != "fasta" ]]; then echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée." exit 1 fi
Donc sa si j'ai bien compris est une fonction permettant de vérifier que le fichier est bien en *.fasta ou *.fas ....
C'est ça mais ce n'est pas indispensable. Généralement je le fais pour ne pas traiter des fichiers qui ne devraient pas être traités. D'ailleurs cette boucle me pose problème mais j'y reviendrai.
Le problème c'est que je pars en générale d'un fichier txt (je n'ai jamais utilisé les documents en .fasta). Enfin soit, j'ai quand même renommer mom fichier sequence.txt en sequence.fasta . Le problème c'est que sa me met toujours "le fichier n'est pas un fichier fasta. la procédure est abandonnée."
J'ai effectivement le même problème.
Du coup pour esssayer j'ai supprimé la fonctions de vérification et j'ai lancé le script. J'obtiens donc bien un fichier txt "traité" mais à l'intérieur j'ai la 1er ligne de copier à l'identique mais encore tout les sauts de ligne
Ça devrait être réglé avec le nouvelle version du script.
@pingouinux : salut
Ton script est clair et bien documenté.
Merci beaucoup . Tes remarques sont judicieuses et ont été intégrées (le script a été un peu amélioré). En revanche pour ma boucle comme dit plus haut, elle ne fonctionne pas, je vais voir pourquoi.
Voici le nouveau script :
#!/bin/bash
# titre : Linéarisation des fichiers FASTA
# version : 0.0
# auteur : Vaderf <vaderf à free point fr>
# date de création : 2011-11-20
# date de modification :
# licence : GPL v2
#-----------
# Objectifs
#-----------
# Supprimer les retours à la ligne d'un fichier fasta
#-----------
# 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##*.}")
## Vérification de l'extension
#if [[ "$ext" != "fas" || "$ext" != "fasta" ]]; then
# echo -e "Le fichier n'est pas un ficher fasta. La procédure est abandonnée."
# exit 1
#fi
# Création de la variable correspondant au fichier traité
ft="${1%.${ext}}_traité.${ext}"
# Écriture du fichier traité
sed -n "1p" "$1" > "$ft"
sed "1d" "$1" | tr -d "\n\r" >> "$ft"
echo >> "$ft"
exit 0
A+
Dernière modification par Vaderf (Le 20/11/2011, à 17:37)
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#10 Le 20/11/2011, à 16:48
- link5192
Re : [Résolu ] fichier txt au format Fasta
Terrible alors sa sa marche nickel .... Enfin j'ai pas vu de problème et j'obtiens bien une suite de caractère ^^
En revanche, tu peux toujours lui suggérer de transcrire sa macro sous un langage compatible avec Writter (histoire d'augmenter la portabilité).
Oui j'avais pensé au VBA qui est compatible à la fois sur word et sur writer mais il me semble qu'il faut adapter à chaque fois car certaine fonction tournent sur l'un et pas l'autre ..... enfin à voir.
En tout cas un grand merci à toi, maintenant je ne serais plus obligé de passer sous word pour la bioinfo
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#11 Le 20/11/2011, à 17:32
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Terrible alors sa sa marche nickel .... Enfin j'ai pas vu de problème et j'obtiens bien une suite de caractère ^^
Tant mieux .
vaderf a écrit :En revanche, tu peux toujours lui suggérer de transcrire sa macro sous un langage compatible avec Writter (histoire d'augmenter la portabilité).
Oui j'avais pensé au VBA qui est compatible à la fois sur word et sur writer mais il me semble qu'il faut adapter à chaque fois car certaine fonction tournent sur l'un et pas l'autre ..... enfin à voir.
Effectivement, les quelques macros venant de MS office et écrites en VBA que je voulais utiliser sous libreoffice n'ont jamais fonctionné... Je pense que des adaptations sont toujours nécessaires ce qui limite la portabilité.
En tout cas un grand merci à toi, maintenant je ne serais plus obligé de passer sous word pour la bioinfo
Bienvenu dans le monde libre ! Si jamais tu dois manipuler des fichiers textes, je te conseille d'utiliser sed (ou même awk), ça t'aidera beaucoup !
Bon courage pour la suite.
De mon côté, je vais tenter de trouver une solution pour ma boucle de vérification et je posterai alors une nouvelle version du script.
A+
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#12 Le 20/11/2011, à 19:04
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Bon, finalement, j'ai réussi à faire ce que je voulais en remplaçant if par case. C'est un peu moins joli mais ça fonctionne (ce qui est le principal). Voici donc la version corrigée :
#!/bin/bash
# titre : Linéarisation des fichiers FASTA
# version : 0.0
# auteur : Vaderf <vaderf à free point fr>
# date de création : 2011-11-20
# date de modification :
# licence : GPL v2
#-----------
# Objectifs
#-----------
# Supprimer les retours à la ligne d'un fichier fasta
#-----------
# 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é
sed -n "1p" "$1" > "$ft"
sed "1d" "$1" | tr -d "\n\r" >> "$ft"
echo >> "$ft"
exit 0
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#13 Le 20/11/2011, à 19:12
- link5192
Re : [Résolu ] fichier txt au format Fasta
Merci beaucoup comme sa c'est nickel ^^ je vais pouvoir en parler à mon prof
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#14 Le 20/11/2011, à 19:22
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Merci . Si tu souhaites en parler à ton prof, je t'encourage vivement. S'il souhaite l'utiliser, dis-lui que c'est possible juste en installant cygwin. C'est simple à installer et ça permet entre autre de faire tourner des scripts bash.
Bon courage pour la suite !
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#15 Le 20/11/2011, à 19:59
- link5192
Re : [Résolu ] fichier txt au format Fasta
Je te remercie.
Par contre j'ai une question, où as tu appris à réaliser des scripts en bash car sa m'intéresse ?
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#16 Le 20/11/2011, à 20:19
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
En fait, je suis un autodidacte. J'en ai eu besoin pendant ma thèse car j'avais des banques totalisant 30 000 séquences à manipuler. Comme je me sentais pas de le faire à la main (comme tu peux te l'imaginer) et que je travaillais déjà sous Linux, je m'y suis mis.
Les scripts bash, ce n'est pas très compliqué mais quand on n'a pas suivi de formation, ça demande un peu de temps. Sur mes trois ans de thèse, j'estime le temps d'apprentissage à 1 mois et demi complet pour arriver au niveau auquel je suis. Les docs sont assez bien faites sur le net (docs françaises et anglaises). Mon prochain objectif, c'est le perl : c'est plus puissant et plus flexible.
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#17 Le 20/11/2011, à 20:51
- link5192
Re : [Résolu ] fichier txt au format Fasta
Ok merci ^^
Aurais tu pas contre quelque sites à me conseiller histoire de commencer ?
Ubuntu 12.04 (Precise) sur Dell Inspiron N51100 ----> foutu nvidia optimus X_X
Xubuntu 12.04 sur Netbook Samsung shark nf210
Ubuntu commencé depuis 9.10 (Karmic)
Hors ligne
#18 Le 20/11/2011, à 22:14
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Cette doc est pas mal et assez complète. J'y ai trouvé beaucoup de solutions. Après, j'interroge beaucoup Google quand j'ai des questionnements. Il faut bien choisir ses mots-clés mais ça peut être très efficace. Si jamais tu as des questions ou des problèmes dans tes scripts, tu pourras toujours poster dans la section dédiée du forum.
A+
Dernière modification par Vaderf (Le 20/11/2011, à 22:14)
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#19 Le 21/11/2011, à 08:21
- ftarkin
Re : [Résolu ] fichier txt au format Fasta
Ola
Pas mal le bash ^^ Je l'aurai fait en perl moi, mais chacun ses habitudes.
Pour le JaMWB, c'est une suite déja prete de mini-programme java, qui s'utilise via un explorateur (http://www.bioinformatics.org/JaMBW/), tu peux l'utiliser en ligne ou bien le recuperer sur ta machine et t'en servir offline.
En prog bioinfo, si je suis sur perl, c'est pour BioPerl (http://www.bioperl.org/wiki/Main_Page), qui a deja plein de sous-programmes (en gros hein, ce sont des modules de prog objets) qui permettent de manipuler les fichiers de bio sans se casser la tete, du simple fasta aux fichier de mapping NGS en passant par la phylogenie.
Bash est aussi puissant, juste en prog objet il est plus limité.
EDIT pour un biologiste, le meilleur bouquin pour commencer en Perl est un livre de O'Reilly, 'Beginning Perl for Bioinformatics', qui n'est malheureusement plus edité en francais (occasion ?)
Dernière modification par ftarkin (Le 21/11/2011, à 08:23)
Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64
Hors ligne
#20 Le 21/11/2011, à 13:12
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Salut à tous,
Pas mal le bash ^^
Merci beaucoup .
Je l'aurai fait en perl moi, mais chacun ses habitudes.
Tant que ses habitudes permettent d'arriver au même point . Mais comme je compte me mettre au perl, ce petit script pourrait constituer un bon départ. Je pense d'ailleurs le poster lorsqu'il sera prêt. Si jamais tu auras des remarques à faire, je serai tout ouïe.
Pour le JaMWB, c'est une suite déja prete de mini-programme java, qui s'utilise via un explorateur (http://www.bioinformatics.org/JaMBW/), tu peux l'utiliser en ligne ou bien le recuperer sur ta machine et t'en servir offline.
En fait, je ne connaissais pas. Il y a quelques modules qui sont vraiment intéressants. A regarder de plus près.
En prog bioinfo, si je suis sur perl, c'est pour BioPerl (http://www.bioperl.org/wiki/Main_Page), qui a deja plein de sous-programmes (en gros hein, ce sont des modules de prog objets) qui permettent de manipuler les fichiers de bio sans se casser la tete, du simple fasta aux fichier de mapping NGS en passant par la phylogenie.
C'est effectivement vers BioPerl que je comptais m'orienter. Je m'étais déjà renseigné. Je n'ai plus qu'à passer à l'action. Ces petites modules m'ont l'air très sympathique.
Bash est aussi puissant, juste en prog objet il est plus limité.
Je suis tout à fait d'accord. Mais parfois cette limitation est assez frustrante...
EDIT pour un biologiste, le meilleur bouquin pour commencer en Perl est un livre de O'Reilly, 'Beginning Perl for Bioinformatics', qui n'est malheureusement plus edité en francais (occasion ?)
Merci pour l'info. C'est exactement ce dont j'avais besoin !
A+
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#21 Le 22/11/2011, à 15:48
- ftarkin
Re : [Résolu ] fichier txt au format Fasta
Sans se fouler voila la version perl, via google est notre ami et le premier resultat de la requete 'perl raw to fasta' (ICI):
#!/usr/bin/perl
################################################################################
# seq2fas.pl
# This script takes an input file like this:
#
# ACCTTACGCC
# AGTAACGTAG
# TTAGTATATA
# ACCTACGATA
# AAACAGGCCC
# ACCGCTAGAT
# AGCCCCATCC
# CCGGTATACC
# AGCGGACCCC
# AACAACCCCC
#
# and prints an output file in fasta format like this:
#
# >1
# ACCTTACGCC
# >2
# AGTAACGTAG
# >3
# TTAGTATATA
# >4
# ACCTACGATA
# >5
# AAACAGGCCC
# >6
# ACCGCTAGAT
# >7
# AGCCCCATCC
# >8
# CCGGTATACC
# >9
# AGCGGACCCC
# >10
# AACAACCCCC
#
################################################################################
# Author: Benjamin Tovar
################################################################################
use warnings;
use strict;
my $USAGE = "
USAGE:
seq2fas.pl
EXAMPLE:
seq2fas.pl randomDNAsequences.dna random_seqs 60 randomSeqs.fas
";
my $user_in = shift or die $USAGE;
my $fasta_header = shift or die $USAGE;
my $width = shift or die $USAGE;
my $output_file = shift or die $USAGE;
system("pr -n:3 -t -T $user_in | sed 's/^[ ]*/>$fasta_header-/' | tr \":\" \"\n\" | fold -w $width > $output_file");
exit;
Version drafty avec BioPerl:
#!/usr/bin/perl
################################################################################
# Author:Francois Sabot
# Licensed under GPL v3
#Free of use, based on Bioperl website examples
################################################################################
use strict;
use Bio:SeqIO; #Necessite d'avoir Bioperl d'installé
my $infile= $ARGV[0]; #recupere le nom du fichier, donné comme 1er argument
my $influx=Bio::SeqIO->new(-file=>$infile,-format=>'Raw');#chaque sequence est individualisée par un retour à la ligne dans le fichier en texte!
my $out=Bio::SeqIO->new(-file=>">outfile.fasta",-format=>Fasta);
my $i=1;
while (my $seq= $influx->next_seq)#Recupere un objet sequence
{
$seq->name($i); #ajoute un nom a la sequence, de type 1,2,3...
$i++;
$out->write_seq($seq);#Ecrit l'objet sequence en Fasta
}
exit;
Ouala... La version Bioperl permet d'avoir des sequences gigantesques ecrites en fasta correct (ie 60 residus par lignes)
Bioperl c'est bien, mais c'est vrai que parfois un peu de perl vrai c'est plus rapide, voire du bash de chez mémé...
Dernière modification par ftarkin (Le 22/11/2011, à 15:49)
Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64
Hors ligne
#22 Le 22/11/2011, à 16:15
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
# This script takes an input file like this: # # ACCTTACGCC # AGTAACGTAG # TTAGTATATA # ACCTACGATA # AAACAGGCCC # ACCGCTAGAT # AGCCCCATCC # CCGGTATACC # AGCGGACCCC # AACAACCCCC # # and prints an output file in fasta format like this: # # >1 # ACCTTACGCC # >2 # AGTAACGTAG # >3 # TTAGTATATA # >4 # ACCTACGATA # >5 # AAACAGGCCC # >6 # ACCGCTAGAT # >7 # AGCCCCATCC # >8 # CCGGTATACC # >9 # AGCGGACCCC # >10 # AACAACCCCC #
Sympa ce bout de code mais ce n'est pas vraiment ce qui était demandé puisque link5192 voulait linéariser une séquence fasta. Ce script ne fait que formater des séquences.
Bioperl c'est bien, mais c'est vrai que parfois un peu de perl vrai c'est plus rapide, voire du bash de chez mémé...
Je suis d'accord, un code simple est souvent moins long à pondre et plus efficace.
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#23 Le 23/11/2011, à 05:59
- ftarkin
Re : [Résolu ] fichier txt au format Fasta
Ah oui au temps pour moi... J'avais pas vraiment regarder le bash.
Sinon, en bash y'a AWK qui peut aussi etre utile pour reformater
Ordi perso monté en Core i3, 4 Go RAM Voyager 12.04 64
Dell Latitude E6210 (Core i3, 6 Go DDR3) Voyager 12.04 64
HP Z800 (biproc Xeon QuadCore 18 Go DDR3) Voyager 12.04 64
Hors ligne
#24 Le 23/11/2011, à 16:06
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Salut,
Ah oui au temps pour moi... J'avais pas vraiment regarder le bash.
Ce n'est pas bien grave .
Sinon, en bash y'a AWK qui peut aussi etre utile pour reformater
AWK est effectivement très puissant mais je le préfère pour traiter des tableaux de données (c'est un outil vraiment extraordinaire). Après, pour le formatage, je pense que sed et perl sont tout de même un peu plus adapté (mais ça reste comme tu l'as dit une question de préférence).
Asus UL80Vt
Ubuntu 11.10
Hors ligne
#25 Le 24/01/2012, à 00:59
- Vaderf
Re : [Résolu ] fichier txt au format Fasta
Salut à tous,
Comme prévu, je me suis mis au perl et j'ai pris la problématique de ce post comme point de départ. D'ailleurs ce script est plus performant que celui en bash car il accepte plusieurs entrées dans un seul fichier fasta et les linéarise tous. C'est sûr que perl, c'est plus puissant et ça offre un peu plus de souplesse.
#!/usr/bin/perl
# titre : Linéarisation des fichiers FASTA
# version : 0.0
# auteur : Vaderf <vaderf à free point fr>
# date de création : 2012-01-23
# date de modification :
# licence : GPL v3
#-----------
# Objectifs
#-----------
# Supprimer les retours à la ligne d'un fichier fasta
#---------
# Options
#---------
# Affiche tout problème de compilation
use warnings;
# Vérifie que toutes les variables sont locales (my variables)
use strict;
#---------------------------
# Déclaration des variables
#---------------------------
my @inputfile; # : contenu de l'argument d'entrée
# my $filename = filename($ARGV[0]); : nom du fichier
# my $fileextension = extension($ARGV[0]); : nom de l'extension
# my $outputfile; : nom du fichier de sortie
# my $nblines = scalar @inputfile; : nombre de lignes que contient le fichier
my $i = 0; # : variable d'itération
my $inputfile; # : contenu de la ligne à traiter
#------------
# Traitement
#------------
# Vérification de la présence d'un argument
if(@ARGV != 1){
print "Utilisation : linearisation.pl fichier.fas\n";
exit 1;
}
# Mise en variable du fichier s'il existe, s'il n'est pas vide, s'il est en plain text et s'il présente une extension fasta
if( -f $ARGV[0] && -s $ARGV[0] && -T $ARGV[0] ) {
if($ARGV[0] =~ /.fas$|.fasta$/){
open(FASTAFILE, $ARGV[0]);
} else {
print "Le ficher n'est pas un fichier fasta.\n\n";
exit;
}
} else {
print "Impossible d'ouvrir le fichier \"$ARGV[0]\".\n\n";
exit 1;
}
@inputfile = <FASTAFILE>;
close FASTAFILE;
# Enregistrement du fichier traité
my $filename = filename($ARGV[0]);
my $fileextension = extension($ARGV[0]);
my $outputfile = $filename . "_traité" . ".$fileextension";
unless ( open(FASTAFILE_P, ">$outputfile") ) {
print "Impossible d'ouvrir le fichier \"$outputfile\" pour écriture.\n\n";
exit 1;
}
# Traitement du fichier
my $nblines = scalar @inputfile;
while ( $i < $nblines ){
# Traite les entrée fasta
if ($inputfile[$i] =~ /^>.*/){
if ($i == 0){
print FASTAFILE_P $inputfile[$i];
} else {
print FASTAFILE_P "\n\n$inputfile[$i]";
}
$i++;
next;
}
# Linéarise la séquence
$inputfile[$i] =~ s/\s//g;
print FASTAFILE_P $inputfile[$i];
$i++;
}
exit 0;
#--------------
# Sous-routine
#--------------
sub filename {
my($filename) = @_;
my @nn=split(/\./,$filename);
my $filetype=pop(@nn);
my $name=$nn[0];
for(my $i=1;$i<=$#nn;$i++){
$name=join('.',$name,$nn[$i]);
};
return $name;
}
sub extension {
my($filename) = @_;
my @nn=split(/\./,$filename);
my $filetype=pop(@nn);
return $filetype;
}
Si vous avez des commentaires, je suis tout ouïe !
A+
Asus UL80Vt
Ubuntu 11.10
Hors ligne