我下载了一组蛋白质的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个时间信息(再次像跨膜域),对于这些,所有应该命名(如果可能的话,在同一个单元格中,由&#34;,&#34;或&#34;;&#34;或&#34; |&#34;)分隔。
我对R有点家庭,但我无法达到这一点(可能缺乏编程技巧)。我查看了XML编辑器(因为这似乎是最简单的解决方案),但是我无法工作,我根本无法找到帮助我的东西并解释了不同的步骤。我也知道应该有一种方法来处理R中的XML文件,但那里的帮助文件并没有让我得到我需要的地方。在XMLQuire中,我到目前为止唯一可以下载的内容是,我能够看到该文件,但是当我想要做任何事情时它仍然会让我崩溃(即使我只想弄清楚我在哪里)可以编辑文件),所以我的文件可能太长或存在另一个问题。
对此事的帮助将非常感激,我希望找到一个做类似事情的人,但所有解决方案都是受欢迎的,无论多么小,无论我需要使用哪个程序,只要它& #39;免费软件。
如果事情不清楚,请告诉我,我真的尽量保持清醒。抱歉在这个问题上成为这样的金发女郎。
答案 0 :(得分:0)
正如我在评论中提到的,如果您知道或愿意尝试(Bio)Python,那么有一个库可以解析您检索过的文件,Bio.SeqIO:
假设您已经从FTP站点下载了纯文本SwissPort文件格式的整个UniProt(ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.dat。 gz)并将其解压缩为文件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()
使用SeqIO.index()在第16.1.5节中有一个更长的例子 用于对大型序列文件进行排序(不加载所有内容) 一次进入记忆中。)
5.4.2.2 Getting the raw data for a record
您还可以在这里查看:opening sequence files。一个更简单的问题,但与你的问题相似,已在Biostar中得到解答,这可能就是你所需要的Parsing Swiss-Prot files
基本上,您可以从文件中提取记录,将它们存储在Python对象中并随意操作它们。例如,检索ID。
我的回答很模糊,但应该指出正确的方向。我希望它有所帮助。