如何使用perl实现ncbi基因组数据格式转换
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下如何使用perl实现ncbi基因组数据格式转换,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!ncbi基因组数据格式转换大家都知道从ncbi下载的基因组数据与正常的基
千家信息网最后更新 2025年01月20日如何使用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安全错误
数据库的锁怎样保障安全
网络安全未来的问题和对策
手机原神怎么切换服务器
上海 软件开发 13薪
学校悬挂网络安全横幅图片
重视网络安全
关系数据库数据的完整性
一键建站、ftp、数据库
克尔瑞数据库 账户
网络安全专业描述
领导视察网络安全检查
数据库统计结果
网络安全问题及典型经验
软件开发的基本思想
海淀区网络营销软件开发范围
互联网科技公司宣传页介绍
邮件服务器 安全性
重庆智能边缘计算服务器购买
互联网科技手抄报边框
深圳市奇乐软件开发有限公司
csgo哪个服务器商店下载快
池州物业管理软件开发公司
wlan安全还是移动网络安全
安川机器人高速服务器功能
软件开发-监控系统
如何在表格中设置数据库日期
软件开发主流技术概念
公安基层网络安全防范
我的世界服务器怎么避免卡方块
网络安全web过滤
吉林小型软件开发公司