2017-11-14 5 views
0

I eine Datendatei, die das Format der folgenden hat:Wie Linien zu extrahieren, die innerhalb des Radius kartesischer Koordinaten

ATOM  4 N ASP A 1  105.665 49.507 41.867 1.00 71.64   N 
ATOM  5 CA ASP A 1  105.992 48.589 42.982 1.00 70.20   C 
ATOM  6 C ASP A 1  107.024 49.191 43.936 1.00 69.70   C 

in Zeile 1 die Zahlen (105,665, 49,507 und 41,867), die Spalten der Koordinaten (x, y, z). Wie extrahiere ich die gesamte Linie mit Koordinaten innerhalb eines bestimmten Radius und gebe sie in einer anderen Datei aus? Die Gleichung, die die Koordinaten auf den Radius zu korrelieren ist:

radius = SQRT (x^2 + y^2 + z^2)

+0

Sie scheinen auf einer PDB-Struktur zu arbeiten. Wenn Sie Erfahrung mit Python haben, können Sie eines der verfügbaren Pakete verwenden, um das für Sie zu erledigen! Nach meinem Wissen gibt es [MDAnlaysis] (https://github.com/MDAnalysis/mdanalysis/) und [mdtraj] (https://github.com/mdtraj/mdtraj). –

+0

Bitte aktualisieren Sie die Datei ordnungsgemäß. Die Werte '105.314, 50.822 und 41.951' sind in den gezeigten Beispielzeilen nicht vorhanden. Auch was ist der Radius Wert gegen? – Inian

+0

Wie überprüfen wir, ob der berechnete Radius innerhalb einer Grenze liegt? Aktualisieren Sie die Frage mit den richtigen Details – Inian

Antwort

2

I denken, dies bedeutet:

awk -v R=124.44 '($7^2)+($8^2)+($9^2) < R^2' YourFile 

Ändern der R=124.44 passend zu Ihrem Radius.

Beispielausgabe

ATOM  4 N ASP A 1  105.665 49.507 41.867 1.00 71.64   N 
ATOM  5 CA ASP A 1  105.992 48.589 42.982 1.00 70.20   C 
Verwandte Themen