5 作共线性分析的时候,用水稻的bed文件,无法获得水稻的cds,是不是因为水稻的cds.fa文件内是os08t0254300-00,而不像拟南芥的at012358.1这样后缀不一样,所有无法过去它的cds

attachments-2018-12-9CwUylTz5c0e64eba2044.jpgattachments-2018-12-dScPhc5z5c0e64f55e6d3.jpg运行这个命令的时候perl get_fa_by_id_from_bed.pl ATH.bed Arabidopsis_thaliana.TAIR10.cds.all.fa ATH.cds

脚本:#北京组学生物科技有限公司

#email: huangls@biomics.com.cn


die "perl $0 <idlist> <fa> <OUT>" unless ( @ARGV == 3 );

use Math::BigFloat;

use Bio::SeqIO;

use Bio::Seq;


#读入蛋白序列

$in = Bio::SeqIO->new(

-file   => "$ARGV[1]",

-format => 'Fasta'

);


#输出蛋白序列:

$out = Bio::SeqIO->new(

-file   => ">$ARGV[2]",

-format => 'Fasta'

);


#读取需要提取基因ID

my %keep = ();

open IN, "$ARGV[0]" or die "$!";


while (<IN>) {

chomp;

next if /^#/;

my @a = split /\t/;

$keep{"$a[3].1"}=1; ##注意提取第一个转录本

}

close(IN);


#输出想要的基因的序列

while ( my $seq = $in->next_seq() ) {

my ( $id, $sequence, $desc ) = ( $seq->id, $seq->seq, $seq->desc );


if ( exists $keep{$id} ) {

$out->write_seq($seq);

}

}

$in->close();

$out->close();

输入文件为:Oryza_sativa.IRGSP-1.0.cds.all.fa 和os.bed

结果:无法获得os的CDS序列

请先 登录 后评论

1 个回答

omicsgene - 生物信息
擅长:重测序,遗传进化,转录组,GWAS

看你运行的命令是拟南芥,的应该是没有问题,但是你贴的都是白菜的文件?  肯定不对了;

注意ID对应:这里加了.1 在拟南芥所有基因ID的后面加了.1  所有可以用基因ID,提取出拟南芥的基因对应的第一一个转录本序列;


你可以观察转录本ID和基因ID之间的差别,相应修改下面地方的代码:

attachments-2018-12-CUv6T1JN5c0f280334efc.jpg



基因家族分析这部分已经更新一个课程解决这个问题,如下:


attachments-2018-12-02vzZWEC5c1359a38044b.jpg
建议学习perl课程:perl入门》《perl高级编程

请先 登录 后评论
  • 1 关注
  • 0 收藏,3184 浏览
  • 杰1985 提出于 2018-12-10 21:07

相似问题