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 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 sad

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 :

link5192 a écrit :

[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
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 ^^

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 ^^


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:

ftarkin a écrit :

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.

ftarkin a écrit :

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).

ftarkin a écrit :

T'es dans quelle fac ??

link5192 est dans un lycée (je présume en BTS).


@link5192:

link5192 a écrit :

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).

link5192 a écrit :
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).

link5192 a écrit :
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 :

link5192 a écrit :

Je suis pas en fac je suis en BTS biotechnologie.

J'avais raison tongue;).

link5192 a écrit :

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

link5192 a écrit :

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.

link5192 a écrit :

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.

link5192 a écrit :

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

pingouinux a écrit :

Ton script est clair et bien documenté.

Merci beaucoup wink. 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 ^^

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.

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

link5192 a écrit :

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 wink.

link5192 a écrit :
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é.

link5192 a écrit :

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 ! wink 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 wink. 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,

ftarkin a écrit :

Pas mal le bash ^^

Merci beaucoup big_smile.

ftarkin a écrit :

Je l'aurai fait en perl moi, mais chacun ses habitudes.

Tant que ses habitudes permettent d'arriver au même point wink. 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.

ftarkin a écrit :

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.

ftarkin a écrit :

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.

ftarkin a écrit :

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...


ftarkin a écrit :

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

ftarkin a écrit :
# 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.

ftarkin a écrit :

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,

ftarkin a écrit :

Ah oui au temps pour moi... J'avais pas vraiment regarder le bash.

Ce n'est pas bien grave wink.

ftarkin a écrit :

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 wink !

A+


Asus UL80Vt
Ubuntu 11.10

Hors ligne