目前,我正在设计糖生物学领域的一些格式转换工具。格式转换涉及从文本文件转到字段中标准的XML文件。大多数情况下,我们获得的数据包含下面的纯文本文件中感兴趣的信息。实际文件在一行中包含所有这些内容。读取和拆分此文本以获取信息是微不足道的(可能不直观),但XML就是问题所在。
[][b-D-GlcpNAc]
{[(4+1)][b-D-GlcpNAc]
{[(4+1)][b-D-Manp]
{[(3+1)][a-D-Manp]
{[(2+1)][a-D-Manp]{}
}
[(6+1)][a-D-Manp]
{[(3+1)][a-D-Manp]{}
[(6+1)][a-D-Manp]{}
}
}
}
如何解释:
您可以阅读XML并了解链接的工作原理。但如果你们想要更详细的解释,那就问问吧。
XML的外观如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<GlydeII>
<molecule subtype="glycan" id="From_GlycoCT_Translation">
<residue subtype="base_type" partid="1" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=b-dglc-HEX-1:5" />
<residue subtype="substituent" partid="2" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=n-acetyl" />
<residue subtype="base_type" partid="3" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=b-dglc-HEX-1:5" />
<residue subtype="substituent" partid="4" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=n-acetyl" />
<residue subtype="base_type" partid="5" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=b-dman-HEX-1:5" />
<residue subtype="base_type" partid="6" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" />
<residue subtype="base_type" partid="7" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" />
<residue subtype="base_type" partid="8" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" />
<residue subtype="base_type" partid="9" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" />
<residue subtype="base_type" partid="10" ref="http://www.monosaccharideDB.org/GLYDE-II.jsp?G=a-dman-HEX-1:5" />
<residue_link from="2" to="1">
<atom_link from="N1H" to="C2" to_replace="O2" bond_order="1" />
</residue_link>
<residue_link from="3" to="1">
<atom_link from="C1" to="O4" from_replace="O1" bond_order="1" />
</residue_link>
<residue_link from="4" to="3">
<atom_link from="N1H" to="C2" to_replace="O2" bond_order="1" />
</residue_link>
<residue_link from="5" to="3">
<atom_link from="C1" to="O4" from_replace="O1" bond_order="1" />
</residue_link>
<residue_link from="6" to="5">
<atom_link from="C1" to="O3" from_replace="O1" bond_order="1" />
</residue_link>
<residue_link from="7" to="6">
<atom_link from="C1" to="O2" from_replace="O1" bond_order="1" />
</residue_link>
<residue_link from="8" to="5">
<atom_link from="C1" to="O6" from_replace="O1" bond_order="1" />
</residue_link>
<residue_link from="9" to="8">
<atom_link from="C1" to="O3" from_replace="O1" bond_order="1" />
</residue_link>
<residue_link from="10" to="8">
<atom_link from="C1" to="O6" from_replace="O1" bond_order="1" />
</residue_link>
</molecule>
</GlydeII>
到目前为止,我已经能够轻松获取所有残留字段并将其写入XML。但是我甚至无法为残余连接字段编写伪代码。即使我可以获得有关如何在xml中添加链接信息的帮助和想法,我也会很感激。
答案 0 :(得分:1)
好!很酷的问题,它以一种好的方式伤害了我的大脑。
首先......为了我的理智,我将您的原始数据标记为有意义的方式:
[][b-D-GlcpNAc] {
[(4+1)][b-D-GlcpNAc] {
[(4+1)][b-D-Manp] {
[(3+1)][a-D-Manp] {
[(2+1)][a-D-Manp] { }
}
[(6+1)][a-D-Manp] {
[(3+1)][a-D-Manp] { }
[(6+1)][a-D-Manp] { }
}
}
}
我认为关键在于弄清楚对是什么,并且你想要以编程方式弄清楚你在哪个级别。
伪代码:
hierarchy = 0
nextChar = getNextChar()
while (Parsing):
if (nextChar = "{"):
hierarchy += 1
elif (nextChar = "}"):
hierarchy -= 1
if (nextChar = "["):
storeSugar(hierarchy)
你还想跟踪哪种糖是以前的“父母”糖。