[chimerax-users] python script for measuring distance

Anthony James Schaefer tony.schaefer at uga.edu
Sat Feb 12 14:18:49 PST 2022


Amith,

The "run" function can return a value depending on the command that is executed. For the distance command, the distance is returned as a floating-point number. If I'm understanding what you're trying to do, this should work (I have not tested this):

import os
from chimerax.core.commands import run as rc


target_folder = '/wynton/home/jacobson/avranga1008/Documents/0-combo'
os.chdir(target_folder)
home = os.getcwd()
xp_distance_file = os.path.join(home,'xp-distance.log')
xp_distance_obj = open(xp_distance_file, "w")

for f in os.listdir():
    if f.endswith('.mae'):
        print(f'working on {f}')
        rc(session, "open " + f)
        rc(session, "measure center #1.1 & ligand mark true")
        rc(session, "measure center #1.1 :310,335,728,759 mark true")
        # grab distance
        dist = rc(session, "distance #2 #3")
        rc(session, "close")
        xp_distance_obj.write("%s    %.2f" % (f, dist))

xp_distance_obj.close()

exit()

Best,

Tony
________________________________
From: ChimeraX-users <chimerax-users-bounces at cgl.ucsf.edu> on behalf of Rangarajan, Amith via ChimeraX-users <chimerax-users at cgl.ucsf.edu>
Sent: Saturday, February 12, 2022 9:26 AM
To: ChimeraX Users Help <ChimeraX-users at cgl.ucsf.edu>
Subject: Re: [chimerax-users] python script for measuring distance

[EXTERNAL SENDER - PROCEED CAUTIOUSLY]

Hello everyone, Please see my script below: import os import sys from chimerax.core.commands import run as rc target_folder = '/wynton/home/jacobson/avranga1008/Documents/0-combo' os.chdir(target_folder) home =os.getcwd() ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
Hello everyone,

Please see my script below:

import os
import sys
from chimerax.core.commands import run as rc
target_folder = '/wynton/home/jacobson/avranga1008/Documents/0-combo'
os.chdir(target_folder)
home =os.getcwd()
all = os.listdir()
xp_distance_file = os.path.join(home,'xp-distance.log')
print_to_screen = sys.stdout
mae_files =[]
for f in all:
    if f.endswith('.mae'):
        mae_files.append(f)
        print(f'working on {f}')
        sys.stdout = open(xp_distance_file,'a')
        rc(session,"open " + f)
        rc(session,"measure center #1.1 & ligand mark true")
        rc(session,"measure center #1.1 :310,335,728,759 mark true")
        rc(session,"distance #2 #3")
        rc(session,"close")
        sys.stdout = print_to_screen
print(f'completed writing xp-distance values to {xp_distance_file} ; now moving to next loop')
for f in mae_files:
    line = f + '\n'
    open('file_list.txt','a').write(line)
print("loop is complete")
exit()

I am curently using stdout to write the distance values to a file .I am currently running it on command line
[cid:68afa919-1a35-470f-808c-242e97c85957]

 it seems like a round about way to do it. The output file has lot of special characters and it takes a bit of effort using regex to extract the values.

 I think there might be some logger in chimerax which can do this or some other better way to write results to a file  , but i am not able to find it.
#############



please let me know your suggestions on improving this code.

thanks,
amith


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.rbvi.ucsf.edu/pipermail/chimerax-users/attachments/20220212/7586ece8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 3867 bytes
Desc: image.png
URL: <http://www.rbvi.ucsf.edu/pipermail/chimerax-users/attachments/20220212/7586ece8/attachment.png>


More information about the ChimeraX-users mailing list