0

我下载了一组蛋白质的 Uniprot 文件(n>1000,因此无法手动检查这些蛋白质)。完整的数据文件以平面文本文件或 XML 文件的形式提供。这些文件中有很多信息(例如,请参见此处:http ://www.uniprot.org/uniprot/?query=organism%3A%22homo+sapiens%22 ,然后去下载,您可以查看前 10 个完整数据(txt 或 xml 文件)。

由于其中有很多我不需要的信息,我必须找到一种方法来选择我感兴趣的信息(最好是在数据矩阵中)。对于每个条目,这是:

Wanted information:                 Text file entry:    XML file entry:
Uniprot ID                          ID                  <entry><name>
Gene Name                           GN                  <gene><name type="primary">
Full protein name                   RecName:            <protein><recommendedName><fullName>
Transmembrane domains (may be more) TRANSMEM            <feature type="transmembrane region"><location> This consists of <begin position="xxx"/> and <end position="yyy"/>
Full protein sequence               SQ                  <sequence>

有些条目不会包含所有信息(如跨膜域),然后可能会填写一个 NA。有些条目将包含超过 1 次相同类型的信息(再次如跨膜域),对于这些,都应该命名(如果可能在同一个单元格中,用“,”或“;”或“|”分隔)。

我对 R 有点熟悉,但我无法做到这一点(可能是缺乏编程技能)。我查看了 XML 编辑器(因为这似乎是最简单的解决方案),但我无法让任何工作,我根本找不到可以帮助我的东西并解释了不同的步骤。我也知道应该有一种方法可以在 R 中处理 XML 文件,但是那里的帮助文件也没有让我到达我需要的地方。在 XMLQuire 中,到目前为止我唯一可以下载的东西,我可以看到该文件,但是当我想做任何事情时它一直在我身上崩溃(即使我只是想弄清楚我可以在哪里编辑文件),所以我的文件可能太长或者还有其他问题。

对此问题的帮助将不胜感激,我希望找到做过类似事情的人,但欢迎所有解决方案,无论多么小,无论我需要使用哪个程序,只要它是免费软件。

如果事情不清楚,也请告诉我,我真的尽量做到清楚。很抱歉在这个问题上是个金发女郎。

4

1 回答 1

0

正如我在评论中提到的,如果您知道或愿意尝试 (Bio)Python,那么有一个库可以解析您检索到的那些文件,Bio.SeqIO:

假设您已经从他们的 FTP 站点 (ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.dat.gz) 以纯文本 SwissPort 文件格式下载了整个 UniProt,并且将其解压缩为文件 uniprot_sprot.dat,并且您只想从中提取一些记录:

from Bio import SeqIO
uniprot = SeqIO.index("uniprot_sprot.dat", "swiss")
handle = open("selected.dat", "w")
for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
...handle.write(uniprot.get_raw(acc))
handle.close()

第 16.1.5 节中有一个更长的示例,使用 SeqIO.index() 函数对大型序列文件进行排序(无需一次将所有内容加载到内存中)。

5.4.2.2 获取记录的原始数据

您也可以在这里查看:打开序列文件Biostar已经回答了一个更简单但与您类似的问题,这可能是您需要解析 Swiss-Prot 文件

基本上,您可以从文件中提取记录,将它们存储在 Python 对象中并随意操作它们。例如检索 ID。

我的回答很模糊,但应该指向正确的方向。我希望它有所帮助。

于 2013-01-11T20:52:18.620 回答