Как преобразовать чтение PDB XML в фрейм данных Pandas?

#python-3.x #xml #pandas #dataframe #jupyter

#python-3.x #xml #pandas #фрейм данных #jupyter

Вопрос:

У меня есть XML-набор данных pdb_params с таким именем:

 "<?xml version='1.0' standalone='no' ?>n<dataset>n  <record>n    <dimEntity.structureId>3J7A</dimEntity.structureId>n    <dimEntity.chainId>1</dimEntity.chainId>n    <dimStructure.structureTitle>Cryo-EM structure of the Plasmodium falciparum 80S ribosome bound to the anti-protozoan drug emetine, small subunit</dimStructure.structureTitle>n    <dimStructure.ndbId>null</dimStructure.ndbId>n    <dimStructure.resolution>3.2</dimStructure.resolution>n    <dimStructure.structureMolecularWeight>1263059.88</dimStructure.structureMolecularWeight>n    <dimStructure.macromoleculeType>Protein#RNA</dimStructure.macromoleculeType>n    <dimStructure.residueCount>7121</dimStructure.residueCount>n    <dimEntity.entityId>27</dimEntity.entityId>n    <dimEntity.chainLength>133</dimEntity.chainLength>n    <dimEntity.db_id>Q8I3R6</dimEntity.db_id>n    <dimEntity.db_name>UniProt</dimEntity.db_name>n    <dimEntity.molecularWeight>15431.5</dimEntity.molecularWeight>n    <dimEntity.compound>40S ribosomal protein eS24</dimEntity.compound>n    <dimEntity.taxonomyId>5833</dimEntity.taxonomyId>n    <dimEntity.uniprotAcc>Q8I3R6</dimEntity.uniprotAcc>n    <dimStructure.pubmedId>24913268</dimStructure.pubmedId>n  </record>n  <record>n    <dimEntity.structureId>3J7A</dimEntity.structureId>n    <dimEntity.chainId>2</dimEntity.chainId>n    <dimStructure.structureTitle>Cryo-EM structure of the Plasmodium falciparum 80S ribosome bound to the anti-protozoan drug emetine, small subunit</dimStructure.structureTitle>n    <dimStructure.ndbId>null</dimStructure.ndbId>n    <dimStructure.resolution>3.2</dimStructure.resolution>n    <dimStructure.structureMolecularWeight>1263059.88</dimStructure.structureMolecularWeight>n    <dimStructure.macromoleculeType>Protein#RNA</dimStructure.macromoleculeType>n    <dimStructure.residueCount>7121</dimStructure.residueCount>n    <dimEntity.entityId>28</dimEntity.entityId>n    <dimEntity.chainLength>105</dimEntity.chainLength>n    <dimEntity.db_id>Q8ILN8</dimEntity.db_id>n    <dimEntity.db_name>UniProt</dimEntity.db_name>n    <dimEntity.molecularWeight>11691.9</dimEntity.molecularWeight>n    <dimEntity.compound>40S ribosomal protein eS25</dimEntity.compound>n    <dimEntity.taxonomyId>5833</dimEntity.taxonomyId>n    <dimEntity.uniprotAcc>Q8ILN8</dimEntity.uniprotAcc>n    <dimStructure.pubmedId>24913268</dimStructure.pubmedId>n  </record>n  <record>n    <dimEntity.structureId>3J7A</dimEntity.structureId>n    <dimEntity.chainId>3</dimEntity.chainId>n    <dimStructure.structureTitle>Cryo-EM structure of the Plasmodium falciparum 80S ribosome bound to the anti-protozoan drug emetine, small subunit</dimStructure.structureTitle>n    <dimStructure.ndbId>null</dimStructure.ndbId>n    <dimStructure.resolution>3.2</dimStructure.resolution>n    <dimStructure.structureMolecularWeight>1263059.88</dimStructure.structureMolecularWeight>n    <dimStructure.macromoleculeType>Protein#RNA"
  

он был загружен из базы данных PDB с помощью RestAPI с помощью этой команды:

 baseURL = ('http://www.rcsb.org/pdb/rest/customReport?pdbids=%samp;customReportColumns=structureTitle,ndbId,resolution,structureMolecularWeight,macromoleculeType,residueCount,entityId,chainLength,db_id,db_name,molecularWeight,compound,taxonomyId,entityId,uniprotAcc,taxonomyId,pubmedId,pubmedIdamp;service=wsdisplayamp;ssa=nullamp;primaryOnly=1amp;service=wsfile' % (_query))
result = requests.get(baseURL)
  

В настоящее время он рассматривается как словарь.

Я хотел бы отформатировать данные и преобразовать их в фрейм данных pandas. Как мне это сделать?

Я уже пробовал json

 jason = json.dumps(pdb_params)
file = StringIO(jason)
  

К сожалению, я получаю ошибки и, вероятно, есть более эффективный способ выполнения этой задачи

Комментарии:

1. Я не понимаю. Это Json, XML или CSV?

2. Именно XML помещается в словарь. Затем я попытался преобразовать этот словарь в строку с помощью Json, чтобы затем он был доступен для чтения Pandas