#1 Le 09/11/2008, à 11:06
- mezhoud
[Résolu]script cancaténation-appariement
Rebonjour,
Ce script me permet de :
concaténation des chaines de caractères (gi|xxxxxxxx) et DIP-#xxxxxx) du fichier1.
ensuite apparier la caine de caractère DIP-xxxxxx avec le fichier2.
mettre la concaténation dans un fichier3
si il ya un appariement avec DIP-xxxxxx mettre la ligne du fichier2 sous la concaténation de (gi|xxxxxxxx) et DIP-#xxxxxx)
#!/bin/bash
fichier1="$1"
fichier2="$2"
fichier3="$3"
[[ -f "${fichier3}" ]] && rm "${fichier3}"
cat ${fichier1}|while read ligne
do
if [ -n "$(echo "${ligne}"|grep "Query")" ]; then
entete=$(echo "${ligne}"|sed 's/Query=[ ]\{0,1\}//'|awk -F\| '{ print $1"|"$2 }')
else
if [ -n "$(echo "${ligne}"|grep "^dip:")" ]; then
cle=$(echo "${ligne}"|sed 's/dip://'|awk -F\| '{ print $1 }')
echo "${entete}-${cle}" >> ${fichier3}
grep "$cle" ${fichier2} >> ${fichier3}
fi
fi
done
tout ce que je veux changer la chaine de caractère "gi|xxxxxxxx" par "DR_xxxxxxxxxxxx"
merci beaucoup
Dernière modification par mezhoud (Le 09/11/2008, à 21:00)
Hors ligne
#2 Le 09/11/2008, à 13:29
- Totor
Re : [Résolu]script cancaténation-appariement
Voici :
#!/bin/bash
fichier1="$1"
fichier2="$2"
fichier3="$3"
[[ -f "${fichier3}" ]] && rm "${fichier3}"
cat ${fichier1}|while read ligne
do
if [ -n "$(echo "${ligne}"|grep "Query")" ]; then
entete=$(echo "${ligne}"|sed 's/Query=[ ]\{0,1\}//'|awk -F\| '{ print "DR_"$2 }')
else
if [ -n "$(echo "${ligne}"|grep "^dip:")" ]; then
cle=$(echo "${ligne}"|sed 's/dip://'|awk -F\| '{ print $1 }')
echo "${entete}-${cle}" >> ${fichier3}
grep "$cle" ${fichier2} >> ${fichier3}
fi
fi
done
-- Lucid Lynx --
Hors ligne
#3 Le 09/11/2008, à 14:15
- mezhoud
Re : [Résolu]script cancaténation-appariement
Salu Totor,
Merci beaucoup!
J'ai essayé le script.
Il m'a donné un résultat qui ressemble à cela:
DR_-DIPxxxxxx.
et pour récupérer avec le DR_ les 12 caractères qui suivent?
J'ai ajouté des points mais cela ne marche pas. les points s'affichent et pas les caractères qui varient.
Merci beaucoup
Hors ligne
#4 Le 09/11/2008, à 15:12
- Totor
Re : [Résolu]script cancaténation-appariement
Je ne comprend pas pourquoi le résultat est celui que tu as indiqué.
Avec les fichiers que tu m'avais donnée en test, j'obtiens le résultat suivant :
DR_15805043-DIP-13110N
DIP-2E DIP-1043N P10415 NP_000624 DIP-13110N P04049 NP_002871 3 DIP-108783X:HT DIP-76062X:SS DIP-2X:SS
DR_15805044-DIP-41940N
DR_15805045-DIP-14647N
DR_15805046-DIP-10373N
DR_15805047-DIP-36597N
DR_15805048-DIP-13723N
DR_15805049-DIP-15331N
DR_15805050-DIP-32955N
DR_15805051-DIP-21350N
DR_15805052-DIP-12935N
DR_15805053-DIP-14773N
DR_15805054-DIP-14252N
DR_15805055-DIP-9760N
DR_15805056-DIP-2694N
DR_15805057-DIP-14925N
DIP-29E DIP-372N P20338 DIP-14925N P39958 NP_011062 1 DIP-29X:SS
DR_15805058-DIP-3538N
DR_15805059-DIP-32059N
DR_15805060-DIP-34624N
DR_15805061-DIP-10733N
DR_15805062-DIP-31693N
DR_15805063-DIP-41915N
DR_15805064-DIP-35925N
DR_15805065-DIP-13408N
DR_15805066-DIP-45603N
DR_15805067-DIP-13830N
DR_15805068-DIP-35786N
DR_15805069-DIP-3349N
DR_15805070-DIP-36055N
DR_15805071-DIP-36056N
DR_15805073-DIP-6156N
DR_15805074-DIP-16407N
DR_15805075-DIP-24799N
DR_15805076-DIP-3533N
DR_15805077-DIP-24104N
DR_15805078-DIP-33857N
Par ailleurs, je ne vois pas quels sont les 12 caractères dont tu parles. Ne serait-ce pas plutôt 8 caractères ?
-- Lucid Lynx --
Hors ligne
#5 Le 09/11/2008, à 15:34
- mezhoud
Re : [Résolu]script cancaténation-appariement
Salut
Voici le nouveau fichier. il ressemble
[doc]
Query= DR_A0363-Q9RYF5
dip:DIP-14862N|refseq:NP_215948 369 e-102
Query= DR_A0361-Q9RYF7
dip:DIP-14663N|refseq:NP_215755 87 4e-17
Query= DR_A0338-Q9RYH5
dip:DIP-6518N|refseq:NP_013332|uniprot:Q05979 114 3e-25
Query= DR_A0326-Q9RYI6
dip:DIP-14482N|refseq:NP_215888 127 3e-29
Query= DR_A0308-Q9RYK4
dip:DIP-16897N|refseq:NP_215535 70 2e-12
Query= DR_A0222-Q9RYT6
dip:DIP-14592N|refseq:NP_218151 57 2e-08
Query= DR_A0216-Q9RYU2
dip:DIP-12021N|uniprot:P77619 74 2e-13
Query= DR_A0178-Q9RYX6
dip:DIP-25285N|refseq:NP_502747|uniprot:O17892 459 e-129
Query= DR_A0148-Q9RZ05
dip:DIP-9855N|refseq:NP_417359|uniprot:P76641 44 4e-04
Query= DR_A0147-Q9RZ06
dip:DIP-27218N|refseq:NP_509820|uniprot:Q20502 353 3e-97
Query= DR_A0129-Q9RZ24
dip:DIP-12851N|refseq:NP_417351|uniprot:Q46808 84 2e-16
Query= DR_A0121-Q9RZ32
dip:DIP-14493N|refseq:NP_217846 197 3e-50
Query= DR_A0067-Q9RZ87
dip:DIP-13513N|refseq:NP_217019|uniprot:O06166 270 6e-73
Query= DR_A0007-Q9RZE2
dip:DIP-15951N|refseq:NP_215974 162 4e-40
Query= DR_2612-Q9RR84
dip:DIP-14089N|refseq:NP_217153|uniprot:P71936 57 1e-08
Query= DR_2553-Q9RRD9
dip:DIP-14495N|refseq:NP_216952 54 3e-07
Query= DR_2538-Q9RRF4
dip:DIP-13910N|refseq:NP_216396|uniprot:P63721 177 3e-44
Query= DR_2531-Q9RRG1
dip:DIP-13567N|refseq:NP_216807|uniprot:Q59570 167 1e-41
Query= DR_2261-Q9RS66
dip:DIP-11291N|uniprot:P77735 155 6e-38
Query= DR_2242-Q9RS85
dip:DIP-36924N|refseq:NP_058865|uniprot:P35704 99 1e-21
Query= DR_2189-Q9RSD5
dip:DIP-15529N|refseq:NP_214948 56 3e-08
Query= DR_2091-Q9RSN3
dip:DIP-14484N|refseq:NP_216181 171 9e-43
Query= DR_2074-Q9RSQ0
dip:DIP-40787N|refseq:NP_002425|uniprot:P29372 84 7e-17
Query= DR_1784-Q9RTI0
dip:DIP-7649N|refseq:NP_010520|uniprot:P49367 89 3e-18
Query= DR_1765-Q9RTJ7
dip:DIP-14864N|refseq:NP_217844 52 4e-07
Query= DR_1700-Q9RTQ6
dip:DIP-14352N|refseq:NP_214582 93 6e-19
Query= DR_1666-Q9RTU0
dip:DIP-44440N|uniprot:O83068 76 4e-14
Query= DR_1355-Q9RUM9
dip:DIP-16041N|refseq:NP_214822 47 2e-05
Query= DR_1271-Q9RUW0
dip:DIP-31841N|uniprot:P0ACY1 42 7e-04
Query= DR_1160-Q9RV70
dip:DIP-20028N|refseq:NP_476779|uniprot:P16163 132 5e-31
Query= DR_1096-Q9RVD3
dip:DIP-9149N|refseq:NP_286783|uniprot:P07638 145 9e-35
Query= DR_1028-Q9RVK0
dip:DIP-36045N|uniprot:P0AFT2 160 8e-40
Query= DR_0918-Q9RVV4
dip:DIP-14727N|refseq:NP_217680 265 5e-71
Query= DR_0901-Q9RVX0
dip:DIP-10638N|refseq:NP_289743|uniprot:P09170 41 4e-04
Query= DR_0823-Q9RW46
dip:DIP-13384N|refseq:NP_217218|uniprot:Q59568 248 7e-66
Query= DR_0565-Q9RWV0
dip:DIP-36045N|uniprot:P0AFT2 197 1e-50
Query= DR_0551-Q9RWW4
dip:DIP-25054N|refseq:NP_496469|uniprot:Q20772 199 4e-51
Query= DR_0511-Q9RX04
dip:DIP-10964N|refseq:NP_414900|uniprot:Q47538 105 2e-22
Query= DR_0505-Q9RX10
dip:DIP-18548N|refseq:NP_724960 105 2e-22
Query= DR_0464-Q9RX51
dip:DIP-13875N|refseq:NP_216078|uniprot:Q10769 282 9e-76
Query= DR_0463-Q9RX52
dip:DIP-13876N|refseq:NP_216079|uniprot:Q10768 305 2e-82
Query= DR_0433-Q9RX82
dip:DIP-13021N|refseq:NP_216584|uniprot:Q10670 48 1e-05
Query= DR_0192-Q9RXW3
dip:DIP-16226N|refseq:NP_216109 77 2e-14
Query= DR_0108-Q9RY43
dip:DIP-13298N|refseq:NP_214716|uniprot:P65374 130 6e-30
Query= DR_A0368-Q9RYF0
dip:DIP-6869N|refseq:NP_418417|uniprot:P30140 30 7.1
Query= DR_A0151-Q9RZ02
dip:DIP-40615N|uniprot:Q9XEK5 33 0.92
Query= DR_A0008-Q9RZE1
dip:DIP-20440N|refseq:NP_722605 32 0.97
Query= DR_A0004-Q9RZE5
dip:DIP-15596N|refseq:NP_214885 32 0.40
Query= DR_2624-Q9RR73
dip:DIP-41177N|uniprot:Q9Y5V3 31 0.94
Query= DR_2265-Q9RS62
dip:DIP-16948N|refseq:NP_215444|uniprot:O86344 32 2.8
Query= DR_1597-Q9RU00
dip:DIP-15476N|refseq:NP_215962 34 0.19
Query= DR_1158-Q9RV72
dip:DIP-35755N|refseq:NP_001082370|uniprot:Q8AWF4 30 1.6
Query= DR_0801-Q9RW68
dip:DIP-14975N|refseq:NP_215654 35 0.16
Query= DR_0625-Q9RWP1
dip:DIP-25227N|refseq:NP_501127|uniprot:Q18566 31 1.2
Query= DR_0620-Q9RWP6
dip:DIP-15815N|refseq:NP_217082 42 0.005
Query= DR_0598-Q9RWR8
dip:DIP-3309N|refseq:NP_208334|uniprot:O26068 39 0.003
Query= DR_0268-Q9RXP2
dip:DIP-8839N|refseq:NP_010037|uniprot:Q07748 42 0.001
[/doc]
Les 14 derniers résulats ont des score supérieur à e-5 je les ia regroupé manuellement.
Le DR_ est accompagné de 12 chiffres.
merci beaucoup
Hors ligne
#6 Le 09/11/2008, à 15:53
- Totor
Re : [Résolu]script cancaténation-appariement
ok, je comprend le résultat que tu as obtenu (un peu plus d'explications et d'exemple lors de la demande m'auraient facilité la tâche !)
Alors, voici :
#!/bin/bash
fichier1="$1"
fichier2="$2"
fichier3="$3"
[[ -f "${fichier3}" ]] && rm "${fichier3}"
cat ${fichier1}|while read ligne
do
if [ -n "$(echo "${ligne}"|grep "Query")" ]; then
entete=$(echo "${ligne}"|awk -F= '{ print $1 }')
else
if [ -n "$(echo "${ligne}"|grep "^dip:")" ]; then
cle=$(echo "${ligne}"|sed 's/dip://'|awk -F\| '{ print $1 }')
echo "${entete}-${cle}" >> ${fichier3}
grep "$cle" ${fichier2} >> ${fichier3}
fi
fi
done
-- Lucid Lynx --
Hors ligne
#7 Le 09/11/2008, à 16:01
- mezhoud
Re : [Résolu]script cancaténation-appariement
Dans ce cas il prend qeullement le mot Query.
Tu as tiré juste à gauche. à un plus vers la droite pour avoir seulement DR_A0363-Q9RYF5.
Merci
Hors ligne
#8 Le 09/11/2008, à 16:36
- Totor
Re : [Résolu]script cancaténation-appariement
oups, désolé, j'ai été un peu vite :
remplace
entete=$(echo "${ligne}"|awk -F= '{ print $1 }')
par
entete=$(echo "${ligne}"|awk -F= '{ print $2 }')
-- Lucid Lynx --
Hors ligne
#9 Le 09/11/2008, à 17:00
- mezhoud
Re : [Résolu]script cancaténation-appariement
OK BRAVO! ça marche!
Je suppose que la deuxième version du script peut remplacer la première version.
Encore merci infiniment pour votre temps
Hors ligne
#10 Le 09/11/2008, à 17:10
- mezhoud
Re : [Résolu]script cancaténation-appariement
Restant sur le même exercice. voici le résultat:
[doc]
DR_A0363-Q9RYF5-DIP-14862N
DIP-8E DIP-765N P16220 DIP-14862N Q92793 NP_004371 2 DIP-97843X:SS DIP-8X:SS
DR_A0361-Q9RYF7-DIP-14663N
DR_A0338-Q9RYH5-DIP-6518N
DR_A0326-Q9RYI6-DIP-14482N
DR_A0308-Q9RYK4-DIP-16897N
DR_A0222-Q9RYT6-DIP-14592N
DR_A0216-Q9RYU2-DIP-12021N
DR_A0178-Q9RYX6-DIP-25285N
DR_A0148-Q9RZ05-DIP-9855N
DR_A0147-Q9RZ06-DIP-27218N
DIP-11E DIP-331N P36956 DIP-27218N Q92793 NP_004371 3 DIP-11X:SS DIP-84014X:SS DIP-84013X:SS
DR_A0129-Q9RZ24-DIP-12851N
DR_A0121-Q9RZ32-DIP-14493N
DR_A0067-Q9RZ87-DIP-13513N
DR_A0007-Q9RZE2-DIP-15951N
DR_2612-Q9RR84-DIP-14089N
DR_2553-Q9RRD9-DIP-14495N
DR_2538-Q9RRF4-DIP-13910N
DR_2531-Q9RRG1-DIP-13567N
DR_2261-Q9RS66-DIP-11291N
DR_2242-Q9RS85-DIP-36924N
DR_2189-Q9RSD5-DIP-15529N
DR_2091-Q9RSN3-DIP-14484N
DR_2074-Q9RSQ0-DIP-40787N
DR_1784-Q9RTI0-DIP-7649N
DR_1765-Q9RTJ7-DIP-14864N
DR_1700-Q9RTQ6-DIP-14352N
DR_1666-Q9RTU0-DIP-44440N
DR_1355-Q9RUM9-DIP-16041N
DR_1271-Q9RUW0-DIP-31841N
DR_1160-Q9RV70-DIP-20028N
DR_1096-Q9RVD3-DIP-9149N
DR_1028-Q9RVK0-DIP-36045N
DR_0918-Q9RVV4-DIP-14727N
DR_0901-Q9RVX0-DIP-10638N
DR_0823-Q9RW46-DIP-13384N
DR_0565-Q9RWV0-DIP-36045N
DR_0551-Q9RWW4-DIP-25054N
DR_0511-Q9RX04-DIP-10964N
DR_0505-Q9RX10-DIP-18548N
DR_0464-Q9RX51-DIP-13875N
DR_0463-Q9RX52-DIP-13876N
DR_0433-Q9RX82-DIP-13021N
DR_0192-Q9RXW3-DIP-16226N
[/doc]
Je veux maintenant éliminer dans un noveau fichier les lignes qui commence par DR_ et suivies d'une ligne qui commence par DR_.
Ce qui fait que je garde que les lignes qui commence par DR_ suivies par des lignes qui commencent par DIP.
De tel sorte que j'obtiens la forme suivante dans un nouveau fichier:
DR_.....................
DIP.............................................
DR_.......................
DIP........................................................
ainsi de suite
Hors ligne
#11 Le 09/11/2008, à 18:32
- Totor
Re : [Résolu]script cancaténation-appariement
#!/bin/bash
fichier1="$1"
fichier2="$2"
fichier3="$3"
[[ -f "${fichier3}" ]] && rm "${fichier3}"
cat ${fichier1}|while read ligne
do
if [ -n "$(echo "${ligne}"|grep "Query")" ]; then
entete=$(echo "${ligne}"|awk -F= '{ print $2 }')
else
if [ -n "$(echo "${ligne}"|grep "^dip:")" ]; then
cle=$(echo "${ligne}"|sed 's/dip://'|awk -F\| '{ print $1 }')
if [ $(grep "$cle" ${fichier2}|wc -l) -ne 0 ]; then
echo "${entete}-${cle}" >> ${fichier3}
grep "$cle" ${fichier2} >> ${fichier3}
fi
fi
fi
done
-- Lucid Lynx --
Hors ligne
#12 Le 09/11/2008, à 20:59
- mezhoud
Re : [Résolu]script cancaténation-appariement
Bonsoir,
UN GRAND GRAND GRAND MERCI.
Vraiement vous me facilitez la vie.
C'est une aide très précieuse.
Très cordialement,
Hors ligne