如何使用perl实现ncbi基因组数据格式转换
发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,小编给大家分享一下如何使用perl实现ncbi基因组数据格式转换,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!ncbi基因组数据格式转换大家都知道从ncbi下载的基因组数据与正常的基
千家信息网最后更新 2025年02月16日如何使用perl实现ncbi基因组数据格式转换
小编给大家分享一下如何使用perl实现ncbi基因组数据格式转换,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
ncbi基因组数据格式转换
大家都知道从ncbi下载的基因组数据与正常的基因组数据有所不同,所有的基因转录本CDS的ID都是重新起的,用起来非常不方便,为此写了一perl脚本将其ID转换回来。
用法如下:
UsageForced parameter:-gff genoma gff filemust be given-fa genoma fasta file must be given-o output gff file must be given-out output fasta file must be givenOther parameter:-h Help document
代码如下:
use Getopt::Long;use strict;use Bio::SeqIO;use Bio::Seq;#get optsmy %opts;GetOptions(\%opts, "gff=s", "o=s", "fa=s", "out=s","h");if(!defined($opts{gff}) || !defined($opts{o}) || !defined($opts{fa}) || !defined($opts{out}) || defined($opts{h})){print <<"Usage End.";UsageForced parameter:-gff genoma gff filemust be given-fa genoma fasta file must be given-o output gff file must be given-out output fasta file must be givenOther parameter:-h Help documentUsage End.exit;}open(IN,"$opts{gff}") || die "open $opts{gff} failed\n";open(OUT,">$opts{o}") || die "open $opts{o} failed\n";my %chr;my %gene;my %gene_mrna_num;my %mrna;my %mrna_exon_num;while( ){if(/^#/){print OUT $_;next;}chomp;my @line = split("\t");###########################################################################if($line[2] eq "region"){if($line[8] =~/chromosome/){$line[8] =~ /chromosome=([^;]*)/;my $chromosome = $1;$chr{$line[0]} = $chromosome;}else{$chr{$line[0]} = $line[0];}}###########################################################################if($line[2] eq "gene"){$line[8] =~ /ID=([^;]*);Name=([^;]*)/;my $geneid = $1;my $genename = $2;$line[8] =~ s/$geneid/$genename/;$gene{$geneid} = $genename;$gene_mrna_num{$geneid} = 0;}###########################################################################if($line[2] eq "mRNA"){$line[8] =~ /ID=([^;]*);Parent=([^;]*)/;my $mrnaid = $1;my $geneid = $2;$line[8] =~ s/$geneid/$gene{$geneid}/;$gene_mrna_num{$geneid}++;$line[8] =~ s/$mrnaid/$gene{$geneid}\.$gene_mrna_num{$geneid}/;$mrna{$mrnaid} = "$gene{$geneid}.$gene_mrna_num{$geneid}";$mrna_exon_num{$mrnaid} = 0;}###########################################################################if($line[2] eq "exon"){$line[8] =~ /ID=([^;]*);Parent=([^;]*)/;my $exonid = $1;my $mrnaid = $2;$mrna_exon_num{$mrnaid}++;$line[8] =~ s/$mrnaid/$mrna{$mrnaid};Name=$mrna{$mrnaid}\.exon$mrna_exon_num{$mrnaid}/;$line[8] =~ s/ID=$exonid;//;}###########################################################################if($line[2] eq "CDS"){$line[8] =~ /ID=([^;]*);Parent=([^;]*)/;my $cdsid = $1;my $mrnaid = $2;$line[8] =~ s/$mrnaid/$mrna{$mrnaid}/;$line[8] =~ s/$cdsid/$mrna{$mrnaid}/;}$line[0] = $chr{$line[0]};print OUT join("\t",@line)."\n";}close(IN);close(OUT);my $in = Bio::SeqIO->new(-file => "$opts{fa}" , -format => 'Fasta');my $out = Bio::SeqIO->new(-file => ">$opts{out}" , -format => 'fasta');while ( my $seq = $in->next_seq() ) {#my($id,$sequence)=($seq->id,$seq->seq);my($id,$sequence,$desc)=($seq->id,$seq->seq,$seq->desc);my $newSeqobj = Bio::Seq->new(-seq => $sequence, -desc => $desc, -id => $chr{$id}, ); $out->write_seq($newSeqobj);}
看完了这篇文章,相信你对"如何使用perl实现ncbi基因组数据格式转换"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
基因
基因组
数据
格式
篇文章
不同
为此
代码
完了
更多
有所不同
知识
脚本
行业
资讯
资讯频道
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
苹果六怎么删除应用数据库
数据库 一对多关系
抬杠软件开发公司
ct6200华为管理服务器
习总书记维护网络安全的意义
如何搭共享服务器
xx镇反网络安全宣讲主持词
网络安全中wifi的弱点
查询数据库每个表大小
国外主要期刊数据库
交通银行软件开发上海面试
软件开发职业规划范本
国家网络安全有360吗
服务器安全巡检管理方案
菏泽智慧养老软件开发
我的世界无人管理服务器号推荐
网络诈骗属不属于网络安全
服务器安全检查项
淘小二广州网络技术公司招聘
陕西省高校数据库原理
威海互联网科技股份有限公司
通过服务器访问本地电脑
信息网络安全工程师样本
EAS控制台连接不上数据库
重审核抓数据库
国内云服务器绕备案
网络诈骗属不属于网络安全
cookie怎么发给服务器
疫情期间网络安全知识
淘小二广州网络技术公司招聘