0

请指导我使用 biosmalltalk(Pharo 版)将 GenBank 序列转换为其等效的 FASTA 格式。我已经想办法从磁盘读取 GenBank 文件:| 文件 xym | x:=时间毫秒时钟值。文件 := BioFile on: (FileStream readOnlyFileNamed: BioObject testFilesDirectoryName asFileReference / 'AF165912.gbk')。m:=BioParser tokenizeMultiFasta:文件内容。y:=时间毫秒时钟值。成绩单打开。成绩单清晰。成绩单显示:m;cr。现在我想获得它的 FASTA 等价物。

4

1 回答 1

1

GenBank 格式(应该是)一种人类可读的格式,但它并不容易解析。当 XML 格式不可用或根本不可用时,已经花费了很多精力,并且直到今天仍然在编程库以解析平面 GenBank 格式。BioSmalltalk背后的目标之一是专注于降低复杂性,这意味着使用正确的工具。出于这个原因,不包括 GenBank 平面解析器,期望使用GenBank XML 格式

要尝试首先在干净的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 开始,请记住您拥有纯对象,并且几乎所有内容都可以通过检查器/资源管理器工具发现。

于 2014-09-27T08:58:46.850 回答