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 18/05/2017, à 17:42

grraougrraou

[RESOLU] extraire et compter à partir de plusieurs fichiers

Bonjour a tous

Ca fait quelques temps que je me casse la tête sur ce probleme.

Voila j'ai plusieurs fichiers (1.res, 2.res, 3.res...) qui sont tous du meme type :
========== spectrum     1 restraint   147 ==========
set-i-atoms
          A    82   GLY  HN
set-j-atoms
          A    80   ARG  HB2
R<average>=   5.022 NOE= 3.21 (- 1.29/+ 1.29) Delta=  -0.518  E(NOE)=   0.269
========== spectrum     1 restraint   219 ==========
set-i-atoms
          B    94   LYS  HB2
set-j-atoms
          B    94   LYS  HD1
          B    94   LYS  HD2
R<average>=   3.205 NOE= 2.25 (- 0.63/+ 0.63) Delta=  -0.329  E(NOE)=   0.108

et ce que voudrais obtenir c'est quelque chose de la forme :

82(HN)/80(HB2)          2     1 -0,518   2  0,302     
94(HN)/91(HA)            1     1  -0.329

c'est a dire a gauche le 2eme et le 4eme champ de la ligne qui suit set i-atom suivi de la meme chose pour j-atom

puis le nombre d'occurrence ou ces termes apparaissent (c'est à dire que si on les retrouve dans 2 fichiers .res, on doit avoir le chiffre 2) puis le numero des fichiers ou ils apparaissent avec ce qui suit "Delta="  (le 9eme champ de la ligne commencant par R<average>=)

suis je claire?

j'ai ecrit ca :

BEGIN        {n = 1; m = 1; OFS = "\t"  }
 /set-i-atoms/    {n = NR}
NR == n + 1    {i = $2; k = $4}
 /set-j-atoms/    {m = NR}
NR == m + 1     {j = $2; l = $4}
 /R<ave/        {r = $9 ;\
         c = ++count[i "(" k ")" "/" j "("  l ")"] ; \
                 num[i "(" k ")" "/" j "("  l ")" ":" c] = substr(FILENAME,4,3) ; \
                 delta[ijkl] = r }
END         {for (ijkl in count)
          {
          print    "\n"
          ORS = "\t"
          print ijkl "      ", count[ijkl]
           for ( ic = 1; ic <= count[ijkl]; ic++)
            {
            ORS = " "
            print num[ijkl  ":"  ic]  , delta[ijkl]           
            }
           }
         }

mais il ne m'ecrit que le dernier delta de chaque fichier :
82(HN)/80(HB2)          2     1 -0.329   2  -0.329   
94(HN)/91(HA)           1     1  -0.329


merci de votre aide.


Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par grraougrraou (Le 19/05/2017, à 14:45)

Hors ligne

#2 Le 18/05/2017, à 18:46

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Bonsoir,
C'est bien confus ton histoire. Tu devrais montrer des données et des résultats qui se correspondent, et utiliser des balises-code <>.
Dans cette instruction, la variable ijkl n'est pas définie, et de toute façon on ne récupère que le r du dernier fichier traité :

/R<ave/        {r = $9 ;\
         c = ++count[i "(" k ")" "/" j "("  l ")"] ; \
                 num[i "(" k ")" "/" j "("  l ")" ":" c] = substr(FILENAME,4,3) ; \
                 delta[ijkl] = r }

Hors ligne

#3 Le 19/05/2017, à 10:30

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Désolée de ne pas avoir ete claire, je ne connaissais pas les balises codes….
en fait, au depart j'avais un script qui me donnait moins de renseignements (mais qui marchait) et j'ai voulu l'ameliorer, mais ca ne marche plus....

je peux peut etre joindre les fichiers a partir desquels je travaille et le fichier que j'obtiens (comme ils sont longs, je ne voulais pas les mettre en entier)

Hors ligne

#4 Le 19/05/2017, à 10:37

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

j'avais ce code :

BEGIN		{n = 1; m = 1; OFS = "\t"  }
{b = index(FILENAME,"noe") ; d = b - 3}
 /set-i-atoms/	{n = NR}
NR == n + 1	{i = $2; k = $4}
 /set-j-atoms/	{m = NR}
NR == m + 1 	{j = $2; l = $4; c = ++count[i "(" k ")" "/" j "("  l ")"] ; \
		num[i "(" k ")" "/" j "("  l ")" ":" c] = substr(FILENAME,4,3)}
END 		{for (ij in count) 
		  {
		  print    "\n"
		  ORS = "\t"
		  print ij "       ", count[ij]
		   for ( ic = 1; ic <= count[ij]; ic++) 
			{
			ORS = " "
			print num[ij  ":"  ic]
			}
		   }
		   }

a partir des fichiers : noe6.res

 X-PLOR>print threshold= 0.2 noe 

 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 +++++++++++++++++++++++++++++++ CLASS COMP +++++++++++++++++++++++++++++++++++
 for this class: SCALe=   1.000 AVERage=sum    POTEntial=soft-square
                 SQCOnstant=   1.000 SQEXponent=    2 SQOFfsets(+/-)=   0.000   0.000
                 SOEXponent=    1 RSWItch=   1.000 ASYMptote=   2.000
 
 ========== spectrum     1 restraint    73 ==========
 set-i-atoms
          A    77   ARG  HN  
 set-j-atoms
          A    76   CYS  HA  
 R<average>=   3.289 NOE= 2.38 (- 0.71/+ 0.71) Delta=  -0.201  E(NOE)=   0.040
 ========== spectrum     1 restraint    95 ==========
 set-i-atoms
          A    78   HIS  HN  
 set-j-atoms
          A    77   ARG  HA  
 R<average>=   3.445 NOE= 2.40 (- 0.72/+ 0.72) Delta=  -0.328  E(NOE)=   0.108
 ========== spectrum     1 restraint   147 ==========
 set-i-atoms
          A    82   GLY  HN  
 set-j-atoms
          A    80   ARG  HB2 
 R<average>=   5.022 NOE= 3.21 (- 1.29/+ 1.29) Delta=  -0.518  E(NOE)=   0.269
 ========== spectrum     1 restraint   219 ==========
 set-i-atoms
          B    94   LYS  HB2 
 set-j-atoms
          B    94   LYS  HD1 
          B    94   LYS  HD2 
 R<average>=   3.205 NOE= 2.25 (- 0.63/+ 0.63) Delta=  -0.329  E(NOE)=   0.108
 ========== spectrum     1 restraint   246 ==========
 set-i-atoms
          B    95   TYR  HE1 
          B    95   TYR  HE2 
 set-j-atoms
          B    95   TYR  HB2 
 R<average>=   4.428 NOE= 3.00 (- 1.13/+ 1.13) Delta=  -0.300  E(NOE)=   0.090
 ========== spectrum     1 restraint   271 ==========
 set-i-atoms
          B    96   LYS  HB2 
 set-j-atoms
          B    95   TYR  HB1 
 R<average>=   5.265 NOE= 3.44 (- 1.48/+ 1.48) Delta=  -0.338  E(NOE)=   0.114
 ========== spectrum     1 restraint   327 ==========
 set-i-atoms
          B    99   PHE  HN  
 set-j-atoms
          B    95   TYR  HA  
 R<average>=   3.886 NOE= 2.69 (- 0.90/+ 0.90) Delta=  -0.293  E(NOE)=   0.086
 ========== spectrum     1 restraint   340 ==========
 set-i-atoms
          B    99   PHE  HE1 
          B    99   PHE  HE2 
 set-j-atoms
          B    99   PHE  HA  
 R<average>=   4.683 NOE= 3.19 (- 1.28/+ 1.28) Delta=  -0.212  E(NOE)=   0.045
 ========== spectrum     1 restraint   348 ==========
 set-i-atoms
          B    99   PHE  HE1 
          B    99   PHE  HE2 
 set-j-atoms
          B    99   PHE  HD1 
          B    99   PHE  HD2 
 R<average>=   2.194 NOE= 1.61 (- 0.33/+ 0.33) Delta=  -0.256  E(NOE)=   0.065
 ========== spectrum     1 restraint   369 ==========
 set-i-atoms
          B    100  LEU  HN  
 set-j-atoms
          B    100  LEU  HG  
 R<average>=   4.105 NOE= 2.85 (- 1.02/+ 1.02) Delta=  -0.234  E(NOE)=   0.055
 ========== spectrum     1 restraint   391 ==========
 set-i-atoms
          B    103  VAL  HN  
 set-j-atoms
          B    99   PHE  HA  
 R<average>=   5.393 NOE= 3.52 (- 1.55/+ 1.55) Delta=  -0.324  E(NOE)=   0.105
 ========== spectrum     1 restraint   444 ==========
 set-i-atoms
          B    106  HIS  HN  
 set-j-atoms
          B    102  GLY  HA1 
          B    102  GLY  HA2 
 R<average>=   3.735 NOE= 2.66 (- 0.86/+ 0.86) Delta=  -0.211  E(NOE)=   0.044
 ========== spectrum     1 restraint   530 ==========
 set-i-atoms
          B    110  TRP  HZ2 
 set-j-atoms
          B    110  TRP  HH2 
 R<average>=   2.450 NOE= 1.65 (- 0.34/+ 0.34) Delta=  -0.463  E(NOE)=   0.215
 ========== spectrum     1 restraint   534 ==========
 set-i-atoms
          B    110  TRP  HD1 
 set-j-atoms
          B    110  TRP  HA  
 R<average>=   4.443 NOE= 3.01 (- 1.13/+ 1.13) Delta=  -0.302  E(NOE)=   0.091
 ========== spectrum     1 restraint   547 ==========
 set-i-atoms
          B    111  ARG  HN  
 set-j-atoms
          B    111  ARG  HG1 
          B    111  ARG  HG2 
 R<average>=   3.869 NOE= 2.69 (- 0.91/+ 0.91) Delta=  -0.266  E(NOE)=   0.071
 ========== spectrum     1 restraint   558 ==========
 set-i-atoms
          B    112  TYR  HN  
 set-j-atoms
          B    109  PHE  HA  
 R<average>=   3.927 NOE= 2.76 (- 0.95/+ 0.95) Delta=  -0.213  E(NOE)=   0.045
 ========== spectrum     1 restraint   569 ==========
 set-i-atoms
          B    112  TYR  HB1 
 set-j-atoms
          B    112  TYR  HE1 
          B    112  TYR  HE2 
 R<average>=   4.411 NOE= 2.95 (- 1.09/+ 1.09) Delta=  -0.376  E(NOE)=   0.142
 ========== spectrum     1 restraint   570 ==========
 set-i-atoms
          B    112  TYR  HB2 
 set-j-atoms
          B    112  TYR  HE1 
          B    112  TYR  HE2 
 R<average>=   4.414 NOE= 2.98 (- 1.11/+ 1.11) Delta=  -0.316  E(NOE)=   0.100
 ========== spectrum     1 restraint   615 ==========
 set-i-atoms
          B    115  GLY  HN  
 set-j-atoms
          B    114  ALA  HA  
 R<average>=   3.560 NOE= 2.53 (- 0.80/+ 0.80) Delta=  -0.226  E(NOE)=   0.051
 ========== spectrum     1 restraint   650 ==========
 set-i-atoms
          B    118  ALA  HN  
 set-j-atoms
          B    115  GLY  HA1 
          B    115  GLY  HA2 
 R<average>=   3.688 NOE= 2.57 (- 0.83/+ 0.83) Delta=  -0.287  E(NOE)=   0.083
 ========== spectrum     1 restraint   651 ==========
 set-i-atoms
          B    118  ALA  HN  
 set-j-atoms
          B    117  LEU  HA  
 R<average>=   3.322 NOE= 2.32 (- 0.68/+ 0.68) Delta=  -0.323  E(NOE)=   0.104

 NOEPRI: RMS diff. =   0.066,  #(violat.> 0.2)=    21 of    660 NOEs
 NOEPRI: RMS diff. class COMP =   0.066,  #(viol.> 0.2)=    21 of    660 NOEs
 X-PLOR> 
 X-PLOR>stop 
 HEAP:   maximum use=  3292244 current use=   671768
 X-PLOR: total CPU time=      0.1000 s

noe15.res :

 X-PLOR>print threshold= 0.2 noe 

 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 +++++++++++++++++++++++++++++++ CLASS COMP +++++++++++++++++++++++++++++++++++
 for this class: SCALe=   1.000 AVERage=sum    POTEntial=soft-square
                 SQCOnstant=   1.000 SQEXponent=    2 SQOFfsets(+/-)=   0.000   0.000
                 SOEXponent=    1 RSWItch=   1.000 ASYMptote=   2.000
 
 ========== spectrum     1 restraint    72 ==========
 set-i-atoms
          A    77   ARG  HN  
 set-j-atoms
          A    75   GLY  HN  
 R<average>=   2.172 NOE= 1.62 (- 0.33/+ 0.33) Delta=  -0.217  E(NOE)=   0.047
 ========== spectrum     1 restraint    95 ==========
 set-i-atoms
          A    78   HIS  HN  
 set-j-atoms
          A    77   ARG  HA  
 R<average>=   3.454 NOE= 2.40 (- 0.72/+ 0.72) Delta=  -0.337  E(NOE)=   0.114
 ========== spectrum     1 restraint   106 ==========
 set-i-atoms
          A    79   SER  HN  
 set-j-atoms
          A    78   HIS  HA  
 R<average>=   3.381 NOE= 2.40 (- 0.72/+ 0.72) Delta=  -0.269  E(NOE)=   0.072
 ========== spectrum     1 restraint   170 ==========
 set-i-atoms
          B    91   PHE  HA  
 set-j-atoms
          B    93   ASP  HN  
 R<average>=   3.825 NOE= 2.63 (- 0.87/+ 0.87) Delta=  -0.323  E(NOE)=   0.105
 ========== spectrum     1 restraint   189 ==========
 set-i-atoms
          B    92   LYS  HB1 
          B    92   LYS  HB2 
 set-j-atoms
          B    96   LYS  HE1 
 R<average>=   4.459 NOE= 2.95 (- 1.09/+ 1.09) Delta=  -0.420  E(NOE)=   0.177
 ========== spectrum     1 restraint   196 ==========
 set-i-atoms
          B    94   LYS  HN  
 set-j-atoms
          B    91   PHE  HA  
 R<average>=   4.058 NOE= 2.84 (- 1.01/+ 1.01) Delta=  -0.210  E(NOE)=   0.044
 ========== spectrum     1 restraint   197 ==========
 set-i-atoms
          B    94   LYS  HE1 
          B    94   LYS  HE2 
 set-j-atoms
          B    92   LYS  HA  
 R<average>=   5.017 NOE= 3.00 (- 1.12/+ 1.12) Delta=  -0.898  E(NOE)=   0.806
 ========== spectrum     1 restraint   213 ==========
 set-i-atoms
          B    94   LYS  HE1 
          B    94   LYS  HE2 
 set-j-atoms
          B    118  ALA  HA  
 R<average>=   4.800 NOE= 3.05 (- 1.30/+ 1.30) Delta=  -0.450  E(NOE)=   0.203
 ========== spectrum     1 restraint   219 ==========
 set-i-atoms
          B    94   LYS  HB2 
 set-j-atoms
          B    94   LYS  HD1 
          B    94   LYS  HD2 
 R<average>=   3.188 NOE= 2.25 (- 0.63/+ 0.63) Delta=  -0.312  E(NOE)=   0.098
 ========== spectrum     1 restraint   246 ==========
 set-i-atoms
          B    95   TYR  HE1 
          B    95   TYR  HE2 
 set-j-atoms
          B    95   TYR  HB2 
 R<average>=   4.480 NOE= 3.00 (- 1.13/+ 1.13) Delta=  -0.352  E(NOE)=   0.124
 ========== spectrum     1 restraint   261 ==========
 set-i-atoms
          B    96   LYS  HG1 
          B    96   LYS  HG2 
 set-j-atoms
          B    92   LYS  HB1 
 R<average>=   6.733 NOE= 2.75 (- 0.95/+ 3.25) Delta=  -0.733  E(NOE)=   0.538
 ========== spectrum     1 restraint   271 ==========
 set-i-atoms
          B    96   LYS  HB2 
 set-j-atoms
          B    95   TYR  HB1 
 R<average>=   5.307 NOE= 3.44 (- 1.48/+ 1.48) Delta=  -0.380  E(NOE)=   0.144
 ========== spectrum     1 restraint   327 ==========
 set-i-atoms
          B    99   PHE  HN  
 set-j-atoms
          B    95   TYR  HA  
 R<average>=   3.829 NOE= 2.69 (- 0.90/+ 0.90) Delta=  -0.236  E(NOE)=   0.056
 ========== spectrum     1 restraint   348 ==========
 set-i-atoms
          B    99   PHE  HE1 
          B    99   PHE  HE2 
 set-j-atoms
          B    99   PHE  HD1 
          B    99   PHE  HD2 
 R<average>=   2.194 NOE= 1.61 (- 0.33/+ 0.33) Delta=  -0.256  E(NOE)=   0.065
 ========== spectrum     1 restraint   530 ==========
 set-i-atoms
          B    110  TRP  HZ2 
 set-j-atoms
          B    110  TRP  HH2 
 R<average>=   2.450 NOE= 1.65 (- 0.34/+ 0.34) Delta=  -0.463  E(NOE)=   0.215
 ========== spectrum     1 restraint   534 ==========
 set-i-atoms
          B    110  TRP  HD1 
 set-j-atoms
          B    110  TRP  HA  
 R<average>=   4.557 NOE= 3.01 (- 1.13/+ 1.13) Delta=  -0.416  E(NOE)=   0.173
 ========== spectrum     1 restraint   569 ==========
 set-i-atoms
          B    112  TYR  HB1 
 set-j-atoms
          B    112  TYR  HE1 
          B    112  TYR  HE2 
 R<average>=   4.412 NOE= 2.95 (- 1.09/+ 1.09) Delta=  -0.377  E(NOE)=   0.142
 ========== spectrum     1 restraint   570 ==========
 set-i-atoms
          B    112  TYR  HB2 
 set-j-atoms
          B    112  TYR  HE1 
          B    112  TYR  HE2 
 R<average>=   4.412 NOE= 2.98 (- 1.11/+ 1.11) Delta=  -0.314  E(NOE)=   0.098
 ========== spectrum     1 restraint   615 ==========
 set-i-atoms
          B    115  GLY  HN  
 set-j-atoms
          B    114  ALA  HA  
 R<average>=   3.557 NOE= 2.53 (- 0.80/+ 0.80) Delta=  -0.223  E(NOE)=   0.050
 ========== spectrum     1 restraint   650 ==========
 set-i-atoms
          B    118  ALA  HN  
 set-j-atoms
          B    115  GLY  HA1 
          B    115  GLY  HA2 
 R<average>=   3.696 NOE= 2.57 (- 0.83/+ 0.83) Delta=  -0.295  E(NOE)=   0.087
 ========== spectrum     1 restraint   651 ==========
 set-i-atoms
          B    118  ALA  HN  
 set-j-atoms
          B    117  LEU  HA  
 R<average>=   3.288 NOE= 2.32 (- 0.68/+ 0.68) Delta=  -0.289  E(NOE)=   0.083

 NOEPRI: RMS diff. =   0.079,  #(violat.> 0.2)=    21 of    660 NOEs
 NOEPRI: RMS diff. class COMP =   0.079,  #(viol.> 0.2)=    21 of    660 NOEs
 X-PLOR> 
 X-PLOR>stop 
 HEAP:   maximum use=  3292244 current use=   671768
 X-PLOR: total CPU time=      0.0900 s

la commande :

 awk -f 'compter_vio_noe_delta' noe*.res |sort -n +1 -2 +0 -1 | grep -v "()/()" | sed "s/\.r/ /"g >> vionoe

et le fichier resultat :

 77(HN)/75(HN)      	1	15.   
 77(HN)/76(HA)      	1	6    
 79(HN)/78(HA)      	1	15.   
 82(HN)/80(HB2)      	1	6    
 91(HA)/93(HN)      	1	15.   
 92(HB1)/96(HE1)      	1	15.   
 94(HE1)/118(HA)      	1	15.   
 94(HE1)/92(HA)      	1	15.   
 94(HN)/91(HA)      	1	15.   
 96(HG1)/92(HB1)      	1	15.   
 99(HE1)/99(HA)      	1	6    
 100(HN)/100(HG)      	1	6    
 103(HN)/99(HA)      	1	6    
 106(HN)/102(HA1)      	1	6    
 111(HN)/111(HG1)      	1	6    
 112(HN)/109(HA)      	1	6    
 78(HN)/77(HA)      	2	15.   6    
 94(HB2)/94(HD1)      	2	15.   6    
 95(HE1)/95(HB2)      	2	15.   6    
 96(HB2)/95(HB1)      	2	15.   6    
 99(HE1)/99(HD1)      	2	15.   6    
 99(HN)/95(HA)      	2	15.   6    
 110(HD1)/110(HA)      	2	15.   6    
110(HZ2)/110(HH2)      	2	15.   6    
112(HB1)/112(HE1)      	2	15.   6    
112(HB2)/112(HE1)      	2	15.   6    
 115(HN)/114(HA)      	2	15.   6    
 118(HN)/115(HA1)      	2	15.   6    
 118(HN)/117(HA)      	2	15.   6    

est ce plus clair?

Hors ligne

#5 Le 19/05/2017, à 10:40

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Regarde déjà ma réponse en #2, qui devrait te donner une piste.
Il t'est peut-être possible d'élaguer tes fichiers pour faire un cas test simplifié.

Hors ligne

#6 Le 19/05/2017, à 10:41

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Nos messages se sont croisés. Je regarderai un peu plus tard.

Hors ligne

#7 Le 19/05/2017, à 10:44

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

merci, je vais elaguer.
par contre, je pensais que ijkl etaient definis (vu qu'on s'en sert dans num[...] )

Hors ligne

#8 Le 19/05/2017, à 10:52

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

en elaguant : voila ce qui marchait
noe6.res :

 ========== spectrum     1 restraint    73 ==========
 set-i-atoms
          A    77   ARG  HN  
 set-j-atoms
          A    76   CYS  HA  
 R<average>=   3.289 NOE= 2.38 (- 0.71/+ 0.71) Delta=  -0.201  E(NOE)=   0.040
 ========== spectrum     1 restraint    95 ==========
 set-i-atoms
          A    78   HIS  HN  
 set-j-atoms
          A    77   ARG  HA  
 R<average>=   3.445 NOE= 2.40 (- 0.72/+ 0.72) Delta=  -0.328  E(NOE)=   0.108

noe15.res :

 ========== spectrum     1 restraint    72 ==========
 set-i-atoms
          A    77   ARG  HN  
 set-j-atoms
          A    75   GLY  HN  
 R<average>=   2.172 NOE= 1.62 (- 0.33/+ 0.33) Delta=  -0.217  E(NOE)=   0.047
 ========== spectrum     1 restraint    95 ==========
 set-i-atoms
          A    78   HIS  HN  
 set-j-atoms
          A    77   ARG  HA  
 R<average>=   3.454 NOE= 2.40 (- 0.72/+ 0.72) Delta=  -0.337  E(NOE)=   0.114
 

compter :

BEGIN		{n = 1; m = 1; OFS = "\t"  }
{b = index(FILENAME,"noe") ; d = b - 3}
 /set-i-atoms/	{n = NR}
NR == n + 1	{i = $2; k = $4}
 /set-j-atoms/	{m = NR}
NR == m + 1 	{j = $2; l = $4; c = ++count[i "(" k ")" "/" j "("  l ")"] ; \
		num[i "(" k ")" "/" j "("  l ")" ":" c] = substr(FILENAME,4,3)}
END 		{for (ij in count) 
		  {
		  print    "\n"
		  ORS = "\t"
		  print ij "       ", count[ij]
		   for ( ic = 1; ic <= count[ij]; ic++) 
			{
			ORS = " "
			print num[ij  ":"  ic]
			}
		   }
		   }

la commande :

awk -f 'compter' noe*.res |sort -n +1 -2 +0 -1 | grep -v "()/()" | sed "s/\.r/ /"g >> noe

et le resultat : noe :

77(HN)/75(HN)       	1	15. 
 77(HN)/76(HA)       	1	6  
 78(HN)/77(HA)       	2	15. 6  

ce que je voudrais obtenir :

77(HN)/75(HN)       	1	15. -0.217
 77(HN)/76(HA)       	1	6  -0.201
 78(HN)/77(HA)       	2	15. -0.337 6  -0.328

et meme idealement (mais bon)

	                          6   |   15  
                             =======================
77(HN)/75(HN)       	1	      | -0.217
 77(HN)/76(HA)       	1     -0.201  |
 78(HN)/77(HA)       	2     -0.328  | -0.337 
 

Dernière modification par grraougrraou (Le 19/05/2017, à 12:56)

Hors ligne

#9 Le 19/05/2017, à 11:39

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Je me base sur tes fichiers en #8.

Tu ne traites pas les lignes commençant par

R<average>=

et ne risques donc pas d'y récupérer des informations.

Hors ligne

#10 Le 19/05/2017, à 11:41

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

non, je sais bien.... je montrais le script qui marchait (quand je ne cherchais pas a avoir l'info du "delta")

c'est a partir de ce script que j'ai essayé d'obtenir aussi cette info :

BEGIN		{n = 1; m = 1; OFS = "\t"  }
 /set-i-atoms/	{n = NR}
NR == n + 1	{i = $2; k = $4}
 /set-j-atoms/	{m = NR}
NR == m + 1 	{j = $2; l = $4}
 /R<ave/        {r = $9 ;\
		 c = ++count[i "(" k ")" "/" j "("  l ")" ] ; \
                 num[i "(" k ")" "/" j "("  l ")"  ":" c] = substr(FILENAME,4,3) ; \
                delta[num[ij]] = r 
                 }
END 		{for (ij in count)  
		  {
		  print    "\n"
		  ORS = "\t"
		  print  ij "      ", count[ij]
		   for ( ic = 1; ic <= count[ij]; ic++) 
			{
			ORS = " "
			print num[ij ":"  ic]  	; print delta[num[ij]]		
			}
		   }
		  }

Dernière modification par grraougrraou (Le 19/05/2017, à 11:42)

Hors ligne

#11 Le 19/05/2017, à 13:06

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Le problème vient de ce que ton delta ne dépend que du n° du fichier.
J'en ai profité pour simplifier un peu  le script.

 /set-i-atoms/ {getline; i = $2; k = $4}
 /set-j-atoms/ {getline; j = $2; l = $4}
 /R<ave/        { r = $9
                  ij=i "(" k ")" "/" j "("  l ")"
		  c = ++count[ij]
                  ijc = ij ":" c
                  num[ijc] = gensub("noe(.+)\.res","\\1","",FILENAME)
                  delta[ij,num[ijc]] = r 
                 }
END 		{for (ij in count)  
		  {
		  print    "\n"
		  ORS = "\t"
		  print  ij "      ", count[ij]
		   for ( ic = 1; ic <= count[ij]; ic++) 
			{
			ORS = " "
			ijc = ij ":"  ic
			print num[ijc]  	; print delta[ij,num[ijc]]	
			}
		   }
		  }

Et il te suffit de l'appeler ainsi :

awk -f 'compter' noe*.res |sort -n +1 -2 >noe

Hors ligne

#12 Le 19/05/2017, à 13:11

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

merci beaucoup

Hors ligne

#13 Le 19/05/2017, à 16:45

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

j'ai tout de meme une question :

Je ne comprends pas tres bien  la commande 

gensub("noe(.+)\\.res","\\1","",FILENAME)

D'apres ce que j'ai compris de la commande gensub, on remplace quelque chose dans FILENAME

je comprends qu'on recupere le numero (X) du fichier noeX.res, mais le "'(+.)" et le "\\1" me questionnent....

merci encore de ton aide

Hors ligne

#14 Le 19/05/2017, à 17:05

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

gensub("noe(.+)\.res","\\1","",FILENAME)

.+ : N'importe quel caractère suivi de 1 ou plusieurs caractères quelconques (on aurait pu se restreindre aux chiffres)
"\\1" : Est remplacé par le contenu du couple de parenthèses correspondant à la première parenthèse ouvrante (ici le nombre)

Hors ligne

#15 Le 19/05/2017, à 17:24

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

merci

Hors ligne

#16 Le 19/05/2017, à 21:40

pingouinux

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

Tu peux aussi essayer cette variante :

BEGIN { fmt1="%-18s %5s %s"; fmt2="%7s %s"; PROCINFO["sorted_in"]="@ind_num_asc" }
 /set-i-atoms/ {getline; i = $2; k = $4}
 /set-j-atoms/ {getline; j = $2; l = $4}
 /R<ave/        { r = $9
                  ij=i "(" k ")" "/" j "("  l ")"
		  c = ++count[ij]
                  ijc = ij ":" c
                  num_fic = gensub(".*noe(.+)\.res","\\1","",FILENAME)
                  num[ijc] = num_fic
                  liste_num[num_fic]=""
                  delta[ij,num[ijc]] = r 
                }
END 		{
                 printf(fmt1,"","","|")
                 for (k in liste_num) printf(fmt2,k,"|"); print ""
                 printf(fmt1,"","","=")
                 for (k in liste_num) printf("========="); print ""
                 for (ij in count)  
		  {
                    printf(fmt1,ij,count[ij],"|")
                    for (k in liste_num) {
                      if ( delta[ij,k] ) printf(fmt2,delta[ij,k],"|") 
                      else               printf(fmt2,""        ,"|") 
                    }
                    print ""
		  }
		}

à lancer ainsi (pas de tri, il est déjà fait, voir s'il convient)

awk -f 'compter' noe*.res

Édité : Ajout du tri des résultats

Dernière modification par pingouinux (Le 20/05/2017, à 06:12)

Hors ligne

#17 Le 22/05/2017, à 10:25

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

je teste ca tout de suite.... et après j'essaie de comprendre comment ca marche smile

Hors ligne

#18 Le 22/05/2017, à 10:33

grraougrraou

Re : [RESOLU] extraire et compter à partir de plusieurs fichiers

merci, c'est un super tableau. Comme je le voulais.
me reste plus qu'a tout comprendre.....

Hors ligne