#1 Le 03/10/2008, à 10:26
- mezhoud
[résolu]Bioinformatic - résultat Blastr
Bonjour,
Je voudrais bien extraire de mes résultats de Blast certaines lignes.
Voici la fome de mes résultats de 100 Mo;
Reference: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer,
Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997),
"Gapped BLAST and PSI-BLAST: a new generation of protein database search
programs", Nucleic Acids Res. 25:3389-3402.Query= gi|15805043|ref|NP_293727.1| DNA polymerase III, beta subunit
[Deinococcus radiodurans R1]
(393 letters)Database: dip20080918B.seq
42,562 sequences; 23,571,726 total lettersSearching..................................................done
Score E
Sequences producing significant alignments: (bits) Valuedip:DIP-13110N|refseq:NP_214516|uniprot:Q50790 129 8e-30
dip:DIP-45121N|uniprot:P0A990 123 4e-28
dip:DIP-36038N|uniprot:P0A988 123 4e-28
dip:DIP-9461N|refseq:NP_290334|uniprot:P00583 123 4e-28
dip:DIP-3288N|refseq:NP_207297|uniprot:O25242 65 1e-10
dip:DIP-44394N|uniprot:O83048 56 8e-08
dip:DIP-2417N|refseq:NP_009645|uniprot:P15873 34 0.35
dip:DIP-2568N|refseq:NP_013934|uniprot:P32874 31 2.2
dip:DIP-742N|refseq:NP_012739|uniprot:P07149 31 2.9
dip:DIP-2735N|refseq:NP_009916|uniprot:P25555 30 5.0
dip:DIP-21169N|refseq:NP_651126 30 6.5
dip:DIP-4535N|refseq:NP_116601|uniprot:P43549 30 6.5
dip:DIP-38777N|refseq:NP_593369|uniprot:P87142 29 8.5>dip:DIP-13110N|refseq:NP_214516|uniprot:Q50790
Length = 402Score = 129 bits (323), Expect = 8e-30
Identities = 90/352 (25%), Positives = 174/352 (49%), Gaps = 18/352 (5%)Query: 8 KKTLNEGLGLLERVIPSRSSNPLLTALKVETSEGGLTLSGTNLEIDLSCFVPAEVQQPEN 67
+++ + + + + +P+R + P+L+ + + S+ GLT+SG + E+ V AE+ P +
Sbjct: 19 RESFADAVSWVAKNLPARPAVPVLSGVLLTGSDNGLTISGFDYEVSAEAQVGAEIVSPGS 78Query: 68 FVVPAHLFAQIVRNXXXXXXXXXXXXXXXXXRSGGSDFKLQTGDIEAYPPLSFPAQADVS 127
+V L + I R G + F L T +E YP L +
Sbjct: 79 VLVSGRLLSDITRALPNKPVDVHVEGNRVALTCGNARFSLPTMPVEDYPTLPTLPEETGL 138Query: 128 LDGGELSRAFSSVRYAASNEAFQAVFRGIKLEHHGESARVVASDGYRVAIRDFPASGDGK 187
L + A S V AA + + GI++E GE+ + A+D +R+A+R+ S
Sbjct: 139 LPAELFAEAISQVAIAAGRDDTLPMLTGIRVEILGETVVLAATDRFRLAVRELKWSASSP 198Query: 188 NL----IIPARSVDELIRV-LKDGEARFTYG-------DGMLTVTTDRVKMNLKLLDGDF 235
++ ++PA+++ E + + + R + G DG+L ++ + + +LLD +F
Sbjct: 199 DIEAAVLVPAKTLAEAAKAGIGGSDVRLSLGTGPGVGKDGLLGISGNGKRSTTRLLDAEF 258Query: 236 PDYERVIPKDIKLQVTLPATALKEAVNRVAVLADKNANNRVEFLVSEGTLRLAA-EGDYG 294
P + +++P + T+ L EA+ VA++AD+ A R+EF ++G++RL+A D G
Sbjct: 259 PKFRQLLPTEHTAVATMDVAELIEAIKLVALVADRGAQVRMEF--ADGSVRLSAGADDVG 316Query: 295 RAQDTLSVTQGGTEQAMSLAFNARHVLDALGPIDGD-AELLFSGSTSPAIFR 345
RA++ L V G + +++AFN ++ D L + + F+ + PA+ R
Sbjct: 317 RAEEDLVVDYAG--EPLTIAFNPTYLTDGLSSLRSERVSFGFTTAGKPALLR 366
Ce format de résultats se répéte ~ 6000 fois
Je voudrais bien récupérer toutes les lignes qui commencent par "Query=" suivie par seulement la première ligne qui commence par "dip:"
et les mettre dans un autre fichier texte.
comment faire ce script en Bash?
Merci d'avanceésolu
Dernière modification par mezhoud (Le 03/10/2008, à 21:10)
Hors ligne
#2 Le 03/10/2008, à 12:01
- kuri
Re : [résolu]Bioinformatic - résultat Blastr
cat tonfichierlog | grep -e "Query=" -e "dip:" > tonnouveaufichierlog
Hors ligne
#3 Le 03/10/2008, à 13:47
- mezhoud
Re : [résolu]Bioinformatic - résultat Blastr
Salut,
Merci! Cela a bien marché.
Mais il m'a pris tous les lignes qui commencent avec dip et >dip.
Ce que je veux c'est d'ajouter quelque chose qui permet de predre que la première ligne après celle "Query=" qui commence par "dip" et et non ">dip"
Merci
Hors ligne
#4 Le 03/10/2008, à 18:01
- kuri
Re : [résolu]Bioinformatic - résultat Blastr
ah oui j ai compris ce que tu veux je crois
je te prepares ca
Hors ligne
#5 Le 03/10/2008, à 18:46
- kuri
Re : [résolu]Bioinformatic - résultat Blastr
#!/bin/sh
IFS="
"
DIP="0"
if [ ! $# -eq 2 ]; then
echo "Usage : $0 fichierlog fichierresultat"
exit 1
fi
if [ ! -e $1 ]; then
echo "Fichier log non trouve!"
exit 1
fi
if [ -e $2 ]; then
rm -fr $2
fi
for line in `cat $1`
do
echo $line | awk '{print $1}' | grep "Query=" > /dev/null
if [ $? -eq 0 ]; then
DIP="1"
echo $line >> $2
elif [ $DIP -eq 1 ]; then
echo $line | awk '{print $1}' | grep "dip:" > /dev/null
if [ $? -eq 0 ]; then
DIP=0
echo $line >> $2
fi
fi
done
donc la ce que ca fait :
ca parcours le fichier log pour "Query=", ca l enregistre, puis ca prend le premier "dig:" qui suit pour l enregistrer (ca ignore donc les suivant) et ca se remet a la recherche d un "Query=" et ainsi de suite
Dernière modification par kuri (Le 03/10/2008, à 18:47)
Hors ligne
#6 Le 03/10/2008, à 18:52
- mezhoud
Re : [résolu]Bioinformatic - résultat Blastr
Salut,
OUi c'est bien ce que je voulais.
Je vais l'essayer tout de suite.
Merci beaucoup
Hors ligne
#7 Le 03/10/2008, à 19:03
- Totor
Re : [résolu]Bioinformatic - résultat Blastr
Salut :
Je te propose ceci :
awk ' /^Query=/ {query=$0;next} /^dip:/ { if (query != "") { print query;print;query=""}}' <nom_fichier>
-- Lucid Lynx --
Hors ligne
#8 Le 03/10/2008, à 19:25
- mezhoud1
Re : [résolu]Bioinformatic - résultat Blastr
A la vollet,
Bravo Totor le script a bien marché.
POur mettre cela dans un nouveau fichier faut il faire cela?
awk ' /^Query=/ {query=$0;next} /^dip:/ { if (query != "") { print query;print;query=""}}' <nom_fichier> <nouveau-fichier>
Je vais essayer lcelui de Kuri.
merci beacoup
#9 Le 03/10/2008, à 19:32
- Totor
Re : [résolu]Bioinformatic - résultat Blastr
Presque :
awk ' /^Query=/ {query=$0;next} /^dip:/ { if (query != "") { print query;print;query=""}}' <nom_fichier> > <nouveau-fichier>
-- Lucid Lynx --
Hors ligne
#10 Le 03/10/2008, à 19:39
- mezhoud01
Re : [résolu]Bioinformatic - résultat Blastr
Je pense pour que le script de Kuri soit automatic: sans à chaque fois changer les noms des fichiers.
On doit ajouter des "$1" et $1-nouveau" à la place des fichier et nouveau-fichier.
Totor, donc il suffit de taper à la fin le nom du nouveau fichier?
#11 Le 04/10/2008, à 09:00
- kuri
Re : [résolu]Bioinformatic - résultat Blastr
tu dois appeler mon script comme suit : ./script.sh fichierlog fichieresultat
Hors ligne