免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6685 | 回复: 5
打印 上一主题 下一主题

perl提取genebank序列,程序写好了,但有点问题,望各位大哥帮忙看看 [复制链接]

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
1 [报告]
发表于 2014-08-22 22:57 |只看该作者
1. 请不要截图用序列A, 底下贴序列用序列B..
    test data 和error要用一份data...还要我自己去NCBI找你这个柑橘病毒.

2. 贴代码请加CODE的tag.

3.  猜测error来自 &seq(), 明显靠前的地方可以substr,后面找不到了. 就是说你的正则没拿到全序列.

4. 你就不该用此格式拿序列。就下fasta,另外想办法拿CDS的注释,找个GFF之类的,或者再parse这个文件找CDS位置就好.

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
2 [报告]
发表于 2014-08-24 09:38 |只看该作者
是不是再看看Pubmed网站的使用方式?应该可以直接下载对就的CDS区!

论坛徽章:
0
3 [报告]
发表于 2014-08-24 16:47 |只看该作者
谢谢,程序没有问题,是NCBI别人登录的序列存在问题,除了atcg,还有简并碱基,所有读取不出来。换成\w就好了。回复 2# chenhao392


   

论坛徽章:
0
4 [报告]
发表于 2014-08-24 16:48 |只看该作者
#!/usr/bin/perl
#2014/8/22-10:31:54
open(FILE1,"<CTV.gb") or die;
open(FILE3,">CTV.txt") or die;
while(<FILE1>){
        push @all,$_;
}
        $all=join "",@all;
        $all =~s/ +//mg;
$all =~ s/\s+//mg;
$all =~s/\/\//}/mg;
@private = split "}",$all;
foreach $a(@private){
$a =~/ACCESSION(?<first>(\w{1,4}_?\d{3,6}))/;
$name1 = $+{first};
$i = 0;
while($a =~ /CDS(\d+\.\.\d+)/mg){
$pos = $1;
$i += 1;
open(FILE2,">>CTV_$i.txt") or die;
$pos =~ s/\.\./;/;
($start,$end) = split ";",$pos;
print "$start,$end\n";
$sequence = &seq($a);
print FILE3 "\n>$name1\n$sequence";
my $sequ = substr($sequence,$start-1,$end-$start+1);
print FILE2 "\n>$name1($pos)\n$sequ";
}
}
sub seq{
$seq = shift(@_);
$seq =~ s/\d+//mg;
$seq =~ s/\s+//mg;
$seq =~ /ORIGIN([\w]+)/xsmg;
$sequen = ($1);
return $sequen;
}
close FILE1;
close FILE2;


回复 3# b114213903


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP