Wie erhalte ich die aktuelle "Kameraposition" in PyMol, damit ich sie in Skripten wiederverwenden kann?

Ich habe ein paar Proteinmodelle, die ich mit verschiedenen gebundenen Liganden fotografieren möchte. Es wäre schön, wenn ich es aus der gleichen "Position" machen könnte, aber die einzige Möglichkeit, die gleiche Ansicht zu wiederholen, ist mit zoom resi. 64, 152, 150oder dergleichen, was nicht so gut eingerahmt ist.

Wie kann ich das Ansichtsfenster manuell positionieren, seine Parameter erfassen und im Skript wiederholen?


Ich habe get_view gefunden , zB

PyMOL>get_view
### cut below here and paste into script ###
set_view (\
     0.590180993,    0.670941532,    0.448923886,\
    -0.507570565,    0.740831316,   -0.439937204,\
    -0.627747774,    0.031782545,    0.777776182,\
     0.000000000,    0.000000000, -417.497009277,\
     0.741809845,    7.078243256,   16.473480225,\
   329.157806396,  505.836212158,  -20.000000000 )
### cut above here and paste into script ###

aber das funktioniert nicht in einem .pySkript, wo ich es ändern muss cmd.set_view(...), da es sich beschwert, dass es nur (oder bis zu 5) Argumente will, nicht 18. Das Wiki ist darüber vage , es sagt nur

PYMOL-API

cmd.set_view(string-or-sequence view)

Antworten (1)

Versuchen Sie, die Matrix als String zu übergeben, der 18 Floats enthält, die durch Kommas getrennt sind, z. B. like

cmd.set_view ('''
     0.590180993,    0.670941532,    0.448923886,\
    -0.507570565,    0.740831316,   -0.439937204,\
    -0.627747774,    0.031782545,    0.777776182,\
     0.000000000,    0.000000000, -417.497009277,\
     0.741809845,    7.078243256,   16.473480225,\
   329.157806396,  505.836212158,  -20.000000000 ''')

cmd.get_view()scheint ein Tupel zurückzugeben, also müssen Sie das in einen String konvertieren, wenn Sie dieselbe Position an übergeben möchten cmd.set_view().

Ich habe es in Pymol 1.3 auf der Befehlszeile ausprobiert (allerdings nicht in einem Skript) und es schien zu funktionieren.

Ah, ich denke, wenn ich die "Befehlszeile/interaktive Form" der Befehle in die API-Version übersetzt hätte, hätte ich auch die Klammern beibehalten sollen, die zurückgegeben werden, get_viewdamit sie wirklich verschachtelt sind (also übergeben Sie es als Tupel). Würde aussehen wiecmd.set_view((1,2,3...))
get_viewportBeachten Sie, dass Sie möglicherweise auch Gebrauch von und machen möchten, viewportfalls Sie nicht nur die gleiche Perspektive, sondern auch die gleichen Polsterungen zur äußeren Begrenzung benötigen.
Ich sollte hinzufügen, dass get_viewdas im Moment undokumentiert zu sein scheint. Bei mir funktioniert es mit PyMOL 1.5. Sieht so aus, oder ein verwandter Befehl funktioniert nicht in allen Situationen zuverlässig. Vielleicht möchten Sie auch mail-archive.com/pymol-users@lists.sourceforge.net/… lesen .