Mam skrypt, który wykonuje pewne obliczenia na białko. Po zakończeniu metoda importuje moduł pymol i używa API pymol.cmd, aby wyświetlić wyniki w sesji Pymol. Proces jest czymś podobnym do następujących:

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)

Jednak mój skrypt niekoniecznie potrzebujesz , aby wyświetlić wyniki w Pymol, a ja chciałbym, aby to zrobić tylko wtedy, gdy Pymol jest zainstalowany i uruchomiony.

Łatwo jest sprawdzić, czy Pymol jest zainstalowany (mogę tylko try: import pymol), ale czy istnieje sposób, aby sprawdzić, czy jest aktywna sesja Pymolu, aby wyświetlić wyniki?

2
David Cain 8 sierpień 2012, 10:16

2 odpowiedzi

Najlepsza odpowiedź

Nie jestem ekspertem na Pymolu (nigdy go nie napisałem), ale widzę 2 możliwe sposoby:

  1. Zrób coś trywialnego, która wymaga otwartej sesji Pymolu i wyjątki
  2. Spójrz na nazwy procesów (coś takiego jak os.system("ps ux | grep -i pymol"))

Pierwszy sposób jest lepszy, drugi to brudny hack.

2
Serpens 8 sierpień 2012, 08:26

Zwykle robię coś takiego:

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

Następnie

if pymol_imported:
    display_results(...)

Nie wiem, czy to pytanie "najlepsze praktyki", ale skrypty Pymol są zazwyczaj szybkie, jednorazowe rzeczy w większości przypadków, w każdym razie.

0
Mike 4 kwiecień 2013, 02:35