TypeError: get_properties() отсутствует 1 обязательный позиционный аргумент: 'идентификатор'
Я пытался выяснить эту ошибку на python с помощью PubChemPy, но я застрял. Я пытаюсь ввести список химических веществ и собрать информацию о примерно 200 химических веществах. Это код, который я использую
for i in List_of_Chemicals['Chemical name']:
prop = pcp.get_properties(['CanonicalSMILES'])
любая помощь будет оценена
2 ответа
Похоже, вы передаете список в
get_properties()
но он не принимает список, а может принимать несколько разных параметров. Вот выдержка из текущей документации:
Функция get_properties позволяет извлекать определенные свойства без необходимости иметь дело со всеми составными записями. Это особенно полезно для одновременного получения свойств большого количества соединений:
p = pcp.get_properties('IsomericSMILES', 'CC', 'smiles', searchtype='superstructure')
https://pubchempy.readthedocs.io/en/latest/guide/properties.html
В вашем вопросе не хватает полезных деталей, но я полагаю, вам действительно нужно что-то вроде:
for i in List_of_Chemicals['Chemical name']:
prop = pcp.get_properties(i)
2-е редактирование: этот код идет от списка имен до получения cid, а затем свойства:
import pubchempy as pcp
# list of chemical names
List_of_Chemicals = ['benzene', 'toluene', '2-nonenal']
for chemical_name in List_of_Chemicals:
cid=pcp.get_cids(chemical_name)
prop = pcp.get_properties('CanonicalSMILES', cid)
print (chemical_name + ' ' + str(prop))
get_properties требует cid в качестве обязательного аргумента. Вы не можете передавать химические названия. Итак, вам нужен промежуточный шаг, чтобы получить список идентификаторов, соответствующих именам с pcp.get_cids, что я сделал в приведенном выше коде.