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