perl如何去除fasta或fastq文件中ID重复的序列
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"perl如何去除fasta或fastq文件中ID重复的序列"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"perl如何去除fasta或fast
千家信息网最后更新 2025年01月19日perl如何去除fasta或fastq文件中ID重复的序列
这篇文章主要介绍"perl如何去除fasta或fastq文件中ID重复的序列"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"perl如何去除fasta或fastq文件中ID重复的序列"文章能帮助大家解决问题。
fastq和fasta 文件中序列ID都是唯一的,如果出现不唯一的情况,就需要给他去重复。这有一脚本可 实现此功能。
脚本帮助:
UsageForced parameter:-fa fasta file-fq fastq file -fq1 fastq read1 file -fq2 fastq read2 file -f input file type,"fa"or"fq" must be given-od output dir must be given-n output filename must be givenOther parameter:-h Help document
脚本既可以输入fasta格式的,也可以输入fastq格式序列文件。
-fa选项后跟输入的fasta文件,-fq选项后跟输入的fastq文件,如果fastq序列为双端测序的,则-fq1后跟read1序列,-fq2后跟read2序列。-n后跟输出文件前缀名,-od后跟输出目录。
脚本如下:
use Getopt::Long;use strict;use Bio::SeqIO;use Bio::Seq;#get optsmy %opts;GetOptions(\%opts, "fa=s", "fq=s", "fq1=s", "fq2=s", "f=s", "od=s", "n=s", "h");if(!defined($opts{f}) || !defined($opts{od}) || !defined($opts{n}) || defined($opts{h})){print <<"Usage End.";UsageForced parameter:-fa fasta filemust be given-fq fastq file must be given-fq1fastq read1 file must be given-fq2fastq read2 file must be given-f input file type,"fa"or"fq" must be given-odoutput dir must be given-noutput filename must be givenOther parameter:-h Help documentUsage End.exit;}if($opts{f} eq "fa" && defined($opts{fa})){my$read1 = $opts{fa};open my $FQ1 ,"zcat $read1|" or die "$!";my$fq1=Bio::SeqIO->new(-fh=>$FQ1,-format=>'fasta');open my $GZ1 ,"| gzip >$opts{od}/${n}.fa.gz" or die $!;my$out1 = Bio::SeqIO->new(-fh => $GZ1 , -format => 'fasta');my %id;while ( my $obj1=$fq1->next_seq() ) {my $id1=$obj1->id;if(exists $id{$id1}){next;}else{$id{$id1} = 1;}$out1->write_seq($obj1);}}if($opts{f} eq "fq"){if(defined($opts{fq})){my$read1 = $opts{fq};open my $FQ1 ,"zcat $read1|" or die "$!";my$fq1=Bio::SeqIO->new(-fh=>$FQ1,-format=>'fastq');open my $GZ1 ,"| gzip >$opts{od}/${n}.fq.gz" or die $!;my$out1 = Bio::SeqIO->new(-fh => $GZ1 , -format => 'fastq');my %id;while ( my $obj1=$fq1->next_seq()) {my $id1=$obj1->id;if(exists $id{$id1}){next;}else{$id{$id1} = 1;}$out1->write_seq($obj1);}}elsif(defined($opts{fq1}) && defined($opts{fq2})){my$read1 = $opts{fq1};my$read2 = $opts{fq2};open my $FQ1 ,"zcat $read1|" or die "$!";my$fq1=Bio::SeqIO->new(-fh=>$FQ1,-format=>'fastq');open my $FQ2 ,"zcat $read2|" or die "$!";my$fq2=Bio::SeqIO->new(-fh=>$FQ2,-format=>'fastq');open my $GZ1 ,"| gzip >$opts{od}/${n}_R1.fq.gz" or die $!;my$out1 = Bio::SeqIO->new(-fh => $GZ1 , -format => 'fastq');open my $GZ2 ,"| gzip >$opts{od}/${n}_R2.fq.gz" or die $!;my$out2 = Bio::SeqIO->new(-fh => $GZ2 , -format => 'fastq');my %id;while ( my $obj1=$fq1->next_seq() and my $obj2=$fq2->next_seq() ) {my ($id1,$id2)=($obj1->id,$obj2->id);if(exists $id{$id1}){next;}else{$id{$id1} = 1;}$out1->write_seq($obj1);$out2->write_seq($obj2);}}}
关于"perl如何去除fasta或fastq文件中ID重复的序列"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
文件
序列
后跟
脚本
输入
知识
格式
行业
帮助
输出
不同
实用
内容
前缀
功能
实用性
实际
情况
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库的闭包
电脑清除原数据库
多数据库 中间件插件
数据库技术菜单设计心得
装备软件开发是什么
我的世界服务器ip地址
数据库左右属性
广州信息软件开发外包
沈阳互联网科技学校
网管的网络安全管理报告
nfc饭卡数据库丢失
网络安全发言几句话
厦门纵横网络技术有限公司
ygo233服务器
戴尔服务器厂家实力雄厚
湖州赛龙网络技术有限公司
多租户数据库
云服务器上装docker
山东熠晖黄金网络技术
软件开发公司理念
cdn可以减轻服务器压力吗
机械臂控制软件开发
小米2s微信连接不上服务器
小白测评数据库和平精英帧率
jave软件开发工程师
传说对决为什么服务器登不上
自己写的数据库连接池怎么初始化
云服务器上装docker
存储服务器fc
软件开发商与使用方安全协议