【问题标题】:Please help me to read a genbank file from disk and convert it to fasta请帮我从磁盘读取 genbank 文件并将其转换为 fasta
【发布时间】:2014-09-26 09:53:36
【问题描述】:

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

【问题讨论】:

标签: smalltalk pharo fasta genbank


【解决方案1】:

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

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

【讨论】:

  • 亲爱的 Hernán, 感谢您的宝贵建议。但我希望有所不同。因为我们可以使用 BioPerl 或 BioJava 等多种脚本语言来转换磁盘上的 GenBank 文件:
  • 亲爱的 Hernán, 感谢您的宝贵建议。但我希望有所不同。因为我们可以使用 BioPerl 或 BioJava 等多种脚本语言来转换磁盘上的 GenBank 文件。我希望我也可以使用 Biosmalltalk 来做同样的事情。顺便说一下,我目前正在使用 BioSmalltalk 0.5。我使用的 BioPerl 代码如下:my $infilename = 'AF165912.gbk';我的 $outfilename = 'out_PerlAF165912.fa'; #读取一个序列数组 @seq_object_array = read_all_sequences($infilename,'genbank'); write_sequence(">$outfilename", 'fasta', @seq_object_array);感谢您的帮助。
猜你喜欢
  • 2015-07-22
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
  • 2018-10-16
  • 2014-09-16
  • 2011-10-02
相关资源
最近更新 更多