先描述我的项目内容:

  1. 将50bp长的DNA序列进行单次比对(linux环境,算法gapmis已经写好);
  2. 500万个基因序列文件单次比对,会耗费大量I/O时间。为此希望将1万条基因数据保存在一个AT50_1_0.fasta文件中,每一条基因数据单独保存为一行,如下图所示:
  3. 依次提取各行数据,并调用比对算法gapmis,输出每一行的比对结果。

clipboard.png


“将包含一条基因数据的文件依次进行比对,转化成二维数据进行比对”,直接目前存在的问题:

  1. linux环境下,是否可以编写c循环程序:对.fa中的文件按行读取?
  2. “.fa”文件格式说明:按照“>”标识来界定是否为一条基因数据。如果只有一个“>”,判定只存在一条基因数据;
  3. gapsmis程序在linux环境下的比对命令为:"./gapsmis -a a.fasta -b b.fasta" (将序列a与序列b进行比对)。换句话说:我们需要修改gapsmis程序接口,将命令中的“文件名”输入形式,转换为“基因字符串”输入形式。

(具体解决思路,等我实现再补充,各位大佬见谅)


下面补充一个问题以及解决方案:如何通过基因ID文件从fasta文件中提取特定的基因?

概念介绍:

  • .fa文件格式:

       “>基因ID
       基因序列”
    如下图:AT50_0就是基因ID

    clipboard.png


解决思路:

  • 访问网址http://hgdownload.cse.ucsc.ed...
  • 下载faSomeRecords脚本:faSomeRecords.txt
  • 将txt后缀删除(这里为了上传方便),拷贝到指定的文件夹,运行命令行:
  • $ chmod +x faSomeRecords #赋予文件可执行权限,为Linux系统下执行
  • 执行如下命令,进行数据处理

       ./faSomeRecords AT_50_1_a.fasta ID.txt query.fasta 
       #其中AT_50_1_a.fasta是原始的fasta文件,ID.txt列入了需要查找的基因ID,每行一个,query.fasta为输出文件,包含对应ID的序列信息。
    

linux操作图:

clipboard.png

AT_50_1_a.fasta是原始的fasta文件:

clipboard.png
ID.txt列入了需要查找的基因ID:

clipboard.png

query.fasta为输出文件:

clipboard.png

最终从原始文件提取出基因ID为:AT50_0,AT50_5的基因序列,并将结果保存在query.fasta文件中。


注:本文参考科学网陈振玺博客:http://blog.sciencenet.cn/blo... Tanvir Ahamed博士在biostarts中的回复(https://www.biostars.org/p/12...),实际操作后整理所得。


杨永洁
17 声望6 粉丝

主攻量化策略设计研究;


引用和评论

0 条评论