2017-03-17 5 views
-1

Extrahieren habe ich eine PDB-Datei, die die Datei darstellen Trajektorie wiejede Datei aus pdb trajctory

REMARK GENERATED BY TRJCONV 
TITLE  Protein in water t= 400.00000 
REMARK THIS IS A SIMULATION BOX 
CRYST1 99.547 99.547 99.547 90.00 90.00 90.00 P 1   1 
MODEL  1 
ATOM  1 N PRO A 1  46.850 67.380 57.030 1.00 0.00 
ATOM  2 H1 PRO A 1  46.230 66.770 56.500 1.00 0.00 
ATOM  3 H2 PRO A 1  46.420 68.290 56.940 1.00 0.00 
ATOM  4 CD PRO A 1  47.060 66.780 58.360 1.00 0.00 
TER 
ENDMDL 
REMARK GENERATED BY TRJCONV 
TITLE  Protein in water t= 800.00000 
REMARK THIS IS A SIMULATION BOX 
MODEL  10 
ATOM  1 N PRO A 1  46.850 67.380 57.030 1.00 0.00 
ATOM  2 H1 PRO A 1  46.230 66.770 56.500 1.00 0.00 
ATOM  3 H2 PRO A 1  46.420 68.290 56.940 1.00 0.00 
ATOM  4 CD PRO A 1  47.060 66.780 58.360 1.00 0.00 
TER 
ENDMDL 
REMARK GENERATED BY TRJCONV 
TITLE  Protein in water t= 1200.00000 
REMARK THIS IS A SIMULATION BOX 
MODEL  100 
ATOM  1 N PRO A 1  46.850 67.380 57.030 1.00 0.00 
ATOM  2 H1 PRO A 1  46.230 66.770 56.500 1.00 0.00 
ATOM  3 H2 PRO A 1  46.420 68.290 56.940 1.00 0.00 
ATOM  4 CD PRO A 1  47.060 66.780 58.360 1.00 0.00 
TER 
ENDMDL 

ich die

MODEL  1 
[all info] 
TER 
ENDMDL 

Für alle Modelle Informationen drucken möchten aussieht. unter Beibehaltung des Formats der Datei. Ich habe versucht, diese

awk '/MODEL  1/,/ENDMDL/' test.pdb 

Aber meine Datei ist so groß, es ist nicht möglich, manuell zu tun. Ich möchte jedes Modell als model1, model2 speichern und so weiter mit ihren Koordinateninformationen bis ENDMDL

Antwort

2
$ awk '/MODEL/{f="model" $2 ".pdb"} f{print > f} /ENDMDL/ {close(f);f=""}' file 
$ cat model1.pdb 
MODEL  1 
ATOM  1 N PRO A 1  46.850 67.380 57.030 1.00 0.00 
ATOM  2 H1 PRO A 1  46.230 66.770 56.500 1.00 0.00 
ATOM  3 H2 PRO A 1  46.420 68.290 56.940 1.00 0.00 
ATOM  4 CD PRO A 1  47.060 66.780 58.360 1.00 0.00 
TER 
ENDMDL 

Erklärt:

/MODEL/ {     # @ MODEL 
    f="model" $2 ".pdb" # use f as flag and target filename 
} 
f {      # when there is an f 
    print > f    # output to file in f 
} 
/ENDMDL/ {    # at the ENDMDL 
    close(f)    # close the file 
    f=""     # unset f 
} 
+1

Danke, aber ich möchte jedes Modell als model1.pdb speichern, model2. pdb und so weiter. Wenn ich diesen Code verwende, erhalte ich nur eine einzige Datei. – user2451501

+1

Ja, es hilft, alle Anfragen zu der Frage hinzuzufügen. –

+1

Vielen Dank :) – user2451501