请帮我从磁盘读取genbank文件并将其转换为fasta

时间:2014-09-26 09:53:36

标签: smalltalk pharo fasta genbank

请指导我使用biosmalltalk(Pharo edition)将GenBank序列转换为等效的FASTA格式。 我已经想出要从磁盘读取GenBank文件: |档案x y m | x:= Time millisecondClockValue。 file:= BioFile on :( FileStream readOnlyFileNamed:BioObject testFilesDirectoryName asFileReference /' AF165912.gbk')。 m:= BioParser tokenizeMultiFasta:文件内容。 y:= Time millisecondClockValue。 成绩单打开。 成绩单清楚。 成绩单:m; cr。 现在我希望得到它的FASTA等价物。

1 个答案:

答案 0 :(得分:1)

GenBank格式(应该是)是一种人类可读的格式,但它并不是很容易解析。当XML格式不可用或根本不可用时,在编程库中解析扁平的GenBank格式已经花费了很多努力,现在仍然如此。 BioSmalltalk背后的目标之一是关注复杂性降低,这意味着使用正确的工具。因此,不包括期望支持使用GenBank XML format的GenBank平面解析器。

首先尝试在干净的Pharo 3.0中安装最新的BioSmalltalk,评估以下命令:

$ pharo Pharo.image "config" "http://smalltalkhub.com/mc/hernan/BioSmalltalk" "ConfigurationOfBioSmalltalk" --printVersion --install=development

或其与图像内部的等价:

Gofer it
  smalltalkhubUser: 'hernan' project: 'BioSmalltalk';
  configuration;
  loadDevelopment.

要解析GenBank XML格式的文件,我强烈建议您以可重现的方式重新下载XML格式的文件。如果您从NCBI下载了文件,则可以使用Entrez e-Utils BioSmalltalk客户端(目前NCBI从网页上删除了XML下载选项):

以下脚本以XML格式下载两个GenBank记录,按序列定义和序列字符串过滤节点,并以FASTA格式导出它们。该序列位于GBSeq_sequence节点中。

| gbReader fastaCollection seqsWithDefs |
fastaCollection := BioFastaMultiRecord new.
gbReader := (BioEntrezClient new nuccore
    uids: #(57240072 57240071);
    setModeXML;
    fetch) reader.
seqsWithDefs := gbReader
    selectNodes: #('GBSeq_definition' 'GBSeq_sequence')
    in: gbReader contents.
(seqsWithDefs at: 'GBSeq_definition') with: (seqsWithDefs at: 'GBSeq_sequence') do: [ : defs : seqs |
    fastaCollection addFastaRecord: (BioFastaRecord named: defs value sequence: seqs value) ].
BioFASTAFormatter new exportFrom: fastaCollection sequences.

如果您从Smalltalk开始,请记住您拥有纯对象,几乎所有内容都可以通过检查器/资源管理器工具发现。