Снятие отпечатков пальцев с использованием модуля Python под названием pybel

Я хочу получить отпечатки пальцев, используя смайлы соединений. Я сделал, но проблема в том, что я хочу получить более высокий бит и формат списка, чтобы я мог вычислить длину списков. В этом случае я просто получаю уроки. Любое решение в python с использованием pybel? Я сделал это, но когда я пишу len(fps[0]), я получаю сообщение об ошибке

import pybel
smiles = ['CCCC', 'CCCN']
mols = [pybel.readstring("smi", x) for x in smiles]
fps = [x.calcfp() for x in mols]
print fps[0]

person Gozde Kibar    schedule 16.07.2015    source источник
comment
Какая у вас ошибка? Разве вам не нужно просто написать len(fps)?   -  person Falko    schedule 16.07.2015
comment
У меня возникли проблемы с установкой OpenBabel. Какую ошибку вы получаете при этом? Возможно, __len__() не определено для x.calcfp()-элементов...   -  person adrianus    schedule 16.07.2015
comment
Ошибка: объект типа "отпечаток пальца" не имеет len()   -  person Gozde Kibar    schedule 20.07.2015


Ответы (1)


Вы можете использовать функцию fp для объекта отпечатка пальца. По умолчанию вычисляется отпечаток FP2, его длина 32. Есть код, который выводит длину и бит-0

import pybel
smiles = ['CCCC', 'CCCN']
mols = [pybel.readstring("smi", x) for x in smiles]
fps = [x.calcfp() for x in mols]
print len(fps[0].fp)
print fps[0].fp[0]

Результат:

32 
0
person knawell    schedule 08.09.2015