Я ищу решение моей проблемы, связанной с XML в python.Хотя spectrum не является корневым элементом, давайте предположим, что это для этого примера.
<spectrum index="2" id="controller=0 scan=3" defaultArrayLength="485">
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="2"/>
<cvParam cvRef="MS" accession="MS:1000580" name="MSn spectrum" value=""/>
<cvParam cvRef="MS" accession="MS:1000127" name="centroid mass spectrum" value=""/>
<precursorList count="1">
<precursor spectrumRef="controller=0 scan=2">
<isolationWindow>
<cvParam cvRef="MS" accession="MS:1000040" name="m/z" value="810.78999999999996"/>
<cvParam cvRef="MS" accession="MS:1000023" name="isolation width" value="2"/>
</isolationWindow>
<selectedIonList count="1">
<selectedIon>
<cvParam cvRef="MS" accession="MS:1000040" name="m/z" value="810.78999999999996"/>
</selectedIon>
</selectedIonList>
<activation>
<cvParam cvRef="MS" accession="MS:1000133" name="collision-induced dissociation" value=""/>
<cvParam cvRef="MS" accession="MS:1000045" name="collision energy" value="35"/>
</activation>
</precursor>
</precursorList>
<binaryDataArrayList count="2">
<binaryDataArray encodedLength="5176">
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" value=""/>
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value=""/>
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" value="" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
<binary>AAAAYHHsbEAAAADg3yptQAAAAECt7G1AAAAAAN8JbkAAAAAA.......hLJ==</binary>
</binaryDataArray>
<binaryDataArray encodedLength="2588">
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value=""/>
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value=""/>
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" value=""/>
<binary>ZFzUQWmVo0FH/o9BRfUyQg+xjUOzkZdC5k66QWk6HUSpqyZCsV1NQ......uH=</binary>
</binaryDataArray>
</binaryDataArrayList>
</spectrum>
Я пытаюсь найти все элементы selectedIon в дереве и вернуть его спектр родительских элементов.Если выбранный элемент найден, то
Информация о выбранном элементе:
Масса: 810,78999999999996
Spectra Info:
-------------
index=2
id=controller=0
scan=3
length=485
General Info
------------
ms level=2
Msn spectrum= -
centriod mass spectrum=-
.....................
And all the cvParam name and value as above.
Binary
------
m/z array = AAAAYHHsbEAAAADg3yptQAAAAECt7G1AAAA.....==
intensity array = ZFzUQWmVo0FH/o9BRfUyQg+xjUOzkZdC5k66Q....5C77=
Что я пробовал до сих пор:
import xml.etree.ElementTree as ET
tree=ET.parse('file.mzml')
NS="{http://psi.hupo.org/ms/mzml}"
filesource=tree.findall('.//'+NS+'selectedIon') # Will get all selectedIon element from the tree
Теперь, как я могу вернуться к элементу спектра / подэлементу, чтобы проанализировать соответствующую информацию, как указано выше?
Как мне добиться успеха?