Я вам наврал про cmd.identify. Он возвращает не index, а id. Номера index возвращает команда cmd.index (правда, в парах с именем модели зачем-то). Про cmd.index в руководстве написано: Atom indices are fragile and will change as atoms are added or deleted. Whenever possible, use integral atom identifiers instead of indices.
Полезные ссылки
Все эти ссылки доступны в один клик (в худшем случае, в два клика) с http://pymolwiki.org
Python scripting tutorial – простое введение в программирование для pymol
Script Library – дабы не изобретать велосипедов
Selection Algebra и Property Selectors – документация по выделениям в pymol
За рамками рассказа:
Plugin scripting tutorial – как сделать полноценный плугин для pymol (со своей строчкой в меню). Тут ничего сложного.
Advanced scripting tutorial – как сделать скрипт для pymol на C.
Ещё не написали – как писать для pymol своих wizard'ов (скрипты, которые просят пользователя "ткните в первый атом, ткните во второй атом")
Примеры
1 PyMol> print list(vars(cmd.get_model("all")))
2 ['index', 'bond', 'molecule', 'atom']
3 PyMol> print list(vars(cmd.get_model("all").atom[0]))
4 ['chain', 'resi', 'resn', 'formal_charge', 'id', 'numeric_type', 'index', 'resi_number', 'symbol', 'u_aniso', 'elec_radius', 'stereo', 'b', 'name', 'vdw', 'ss', 'coord', 'hetatm', 'q', 'flags', 'partial_charge', 'segi']
5 PyMol> iterate idx. 1, stored.t = list(vars())
6 PyMol> print stored.t
7 ['chain', 'color', 'resv', 'rank', 'resi', 'resn', 'formal_charge', 'alt', 'numeric_type', 'index', 'label', 'state', 'type', 'text_type', 'ID', 'cartoon', 'elec_radius', 'b', 'name', 'vdw', 'ss', 'elem', 'q', 'flags', 'partial_charge', 'segi', 'model']
Расшифровки того, что я понимаю:
cmd.get_model chempy.models.Indexed
atom [chempy.Atom]
index int – номер атома для внутренних нужд
id int – номер по PDB
name str – имя атома в остатке
chain str – имя цепи
ss str – вторичная структура
symbol str – элемент
coord [float, float, float] – координаты
hetatm int – если 1, то это hetatm
resi_number int – номер остатка
resi str – номер остатка (дословно из PDB)
resn str – имя остатка (дословно из PDB)
segi str
partial_charge float
formal_charge float
flags int
q float – occupancy
vdw float – "радиус" атома
b float – b-factor
stereo int
numeric_type int
text_type str
bond [chempy.Bond]
index [int, int]
stereo int
order int
id int
molecule chempy.Molecule
index {int:chempy.Atom}