2012-08-08 4 views
1

단백질에 대한 계산을 수행하는 스크립트가 있습니다. 완료되면 메소드는 pymol 모듈을 가져오고 pymol.cmd API를 사용하여 PyMOL 세션에 결과를 표시합니다.PyMOL을 실행하는 경우에만 함수 호출

def display_results(results, protein_fn): 
    import pymol 
    pymol.cmd.load(protein_fn) 
    pymol.cmd.alter(...) 
    ... 

protein_fn = "1abc.ent" 
results = analyze_protein(protein_fn) 
display_results(results, protein_fn) 

내 스크립트 파이 몰에 결과를 표시 할 필요는 없다 필요을 수행하고, 파이 몰을 설치하고 실행하면 난 단지 할이 싶습니다, 그러나 : 프로세스는 다음과 유사 무언가가있다 .

PyMOL이 설치되어 있는지 확인하는 것은 쉽지만 (단지 try: import pymol 일 수 있음), 결과를 표시 할 활성 PyMOL 세션이 있는지 확인하는 방법이 있습니까?

답변

2

나는 파이 몰 (이제까지 그것을 스크립트하지 않은 경우)에 대한 전문가가 아니에요하지만 난 2 개 가지 방법을 참조하십시오

  1. 오픈 파이 몰 세션을 필요로 사소한 무언가를하고 예외를
  2. 봐 잡을를 프로세스 이름 (예 : os.system("ps ux | grep -i pymol"))

첫 번째 방법이 더 좋으며 두 번째는 더티 해킹입니다.

+0

방법 1은 간단하고 Pyhon의 "EAFP"정책과 잘 어울립니다. 명확한 API 솔루션이 없다면 아마도 내가 갈 것입니다. –

0

나는 대개 같은 것을 할 : 그 "모범 사례"파이썬을인지 나도 몰라 그런

try: 
    import pymol 
    pymol_imported = True 
except: 
    pymol_imported = False 

if pymol_imported: 
    display_results(...) 

을하지만, 파이 몰 스크립트는 일반적으로, 일회성 단지 빠르다 대부분의 경우, 어쨌든.

+0

감사합니다, Mike, 그러나 질문에 언급했듯이, PyMOL이 설치되어 있는지 확인하는 것은 사소한 일입니다. 내 문제는 PyMOL이 _ 실행 중인지 여부를 확인하는 것이 었습니다. –