24小时热门版块排行榜    

查看: 2199  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ldy2140

金虫 (小有名气)

[交流] 讨论下怎么通过gi号批量获得物种的definition 已有4人参与

做生物信息学的大都避免不了要blast 有时尽管我们blast出来的结果很多很吓人 但还是要将这些结果汇总成excel表格
最近就遇到了很让我头疼的事情 我做了很多转运蛋白的微生物全库的blast 但得到的table里只有匹配物种的gi号 在汇总结果的时候我想把gi号换成物种信息 比如像GBFF里的definition这种能说明物种遗传背景的字符串
所以我考虑用perl的正则表达式替换 写了如下的程序
CODE:
#!/usr/bin/perl
use Bio::Seq;
use Bio::DB::GenBank;

$gb = new Bio::DB::GenBank;
$^I = ".bak";

while (<>) {
  $line = $_;
  if ( /gi\|(\d+)\|/ ) {
    $gi = $1;
    $seq_obj = $gb->get_Seq_by_gi ($1);
    $def = $seq_obj->desc;
  }
  $_ = $line;
  s#\t.*?$gi.*?\t#\t$def\t#;
  print;
}

但是运行起来速度很慢而且很浪费带宽 因为用到的模块是将gi号对应的整个序列信息都下载下来 然后从中提取definition 所以效率很差 这是我花很短时间学习perl和bioperl编写的急功近利的程序 期待高手拍砖

[ Last edited by ldy2140 on 2012-8-28 at 21:55 ]
回复此楼
伸手摘星,未必你如愿,但不会弄脏你的手。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ldy2140

金虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2012-08-28 22:41:10
贴个例子看看

贴一个blast出来的结果(未处理的字符串)
贴一个你想要的结果(目标字符串)

sp|P23936|LACY_STRTR        gi|169822596|gb|ABJK02000022.1|        61.65        631        241        1        5        634        344705        342813        0.0         714
sp|P23936|LACY_STRTR        gi|223555729|gb|ACGH01000016.1|        57.01        628        260        1        2        619        65439        67322        0.0         692
替换后
sp|P23936|LACY_STRTR        Streptococcus infantarius subsp. infantarius ATCC BAA-102 S_infantarius-2.0.1_Cont245, whole genome shotgun sequence.        61.65        631        241        1        5        634        344705        342813        0.0         714
sp|P23936|LACY_STRTR        Lactobacillus buchneri ATCC 11577 contig00018, whole genome shotgun sequence.        57.01        628        260        1        2        619        65439        67322        0.0         692
伸手摘星,未必你如愿,但不会弄脏你的手。
3楼2012-08-29 09:30:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ldy2140 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见