perl 截取 fastq文件

#!/usr/bin/perl -w
use warnings;
use strict;

my $usage = qq{$0 input_fastq trim_length};
die "$usage\n" if scalar @ARGV != 2;
my ($fastq, $trim_length) = @ARGV;

open(FASTQ, $fastq) or die "Can‘t open $fastq\n";
while (my $readid = <FASTQ>) {
        chomp $readid;
        chomp (my $sequence  = <FASTQ>);
        chomp (my $comment   = <FASTQ>);
        chomp (my $quality   = <FASTQ>);

        my $sub_seq      = length $sequence < $trim_length ? $sequence : substr $sequence, 0, $trim_length;
        my $sub_quality  = length $sequence < $trim_length ? $quality  : substr $quality,  0, $trim_length;
        print qq{$readid\n$sub_seq\n$comment\n$sub_quality\n};

}
close FASTQ;

fastq 文件每4行代表一条序列, 利用一个循环,每次读取4行,然后处理;

当读到文件结尾时,$readid 为空,循环终止,

基本思路是看defuse (检测融合基因的工具)的源代码看到的, 里面有一个trim_fastq.pl  脚本,自己稍微修改了下;

以前都是用python的, 新的公司都是用perl的, 还好都是脚本语言, 理解起来也比较轻松。

时间: 11-29

perl 截取 fastq文件的相关文章

天气预报---网络加载最新天气信息,截取JSON文件

仿普通的手机上的天气预报功能,从网络上截取JSON文件 实现的效果图如下: 具体代码如下: FirstViewController.m文件 #import "FirstViewController.h" #import "JRViewController.h" #import "CityModel.h" #import "JSONKit.h" #define kW self.view.frame.size.width #def

截取linux文件存储路径方法

1.截取linux文件存储路径方法 package com.tydic.eshop.action.freemarker; public class dddd { public static void main(String[] args) { String strParentUrl = "/home/tomcat7/ecp/t8086/webapps/ecp/FreeMarker/1463766670142/error/html/index.html"; String[] s = st

将fasta fastq文件线性化处理

将fasta文件线性化处理 awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;next;} {printf("%s",$0);} END {printf("\n");}' < input.fa cat Rmh.fasta | awk '{printf("%s%s",$0,((NR+1)%2==1?"\n"

如何用Perl截取报文

在实际生产环境中,常常需要从后台日志中截取报文,报文的形式类似于 <InterBOSS> ... ... ... </InterBOSS> 一个后台日志有多个报文,每个报文可由操作流水唯一确定. 以前用AWK写过一个,程序如下: beginline=`awk 'BEGIN{i=0}{if($0~"<InterBOSS>") i=NR;if($0~"'$oprseq'"){print i;exit}}' $logname` endl

使用Perl读取Excel文件

1. 任务 为了实现一些机械分词算法,准备使用“国家语委语料库”的分词词表,在线下载到得词表文件是一个Excel文件.本文的任务就是使用Perl从该Execl文件中提取所有的词语. 词表文件格式如下: 需要的词语的位置在从第8行开始的,第B列的所有单元格.一共有14629个词语.(PS:语料库的分词词表包含8万多个词语,但是在线下载到是出现次数在50次以上的词语,只有这1万多). 2. 使用什么模块 通过阅读一些博文发现,PERL的Spreadsheet::ParseExcel模块支持Excel

用 Perl 读写 Excel 文件

转载:http://www.ibm.com/developerworks/cn/linux/sdk/perl/culture-8/ Spreadsheet::WriteExcel 和 Spreadsheet::ParseExcel 在 2000 年,Takanori Kawai 和 John McNamara 编写出了 Spreadsheet::WriteExcel 和Spreadsheet::ParseExcel 模块并将它们张贴在 CPAN 上,这两个模块使得在任何平台上从 Excel 文件

perl学习笔记——文件测试

文件测试主要用于查看如文件是否存在.文件大小.文件更新时间等信息. 文件测试操作符 -e  测试文件是否存在: die "Oops!A file called '$filename' already exists.\n" if -e $filename; -M 测试文件是否保持持续的更新,比如测试某个程序的日志文件是否保持每一周或两周更新. 此处测试的是文件句柄. warn "Config file is looking pretty old!\n" if -M C

【转载】perl修改原文件内容

很多时候,我们希望对原有文件的内容进行一定的修改,linux虽然有sed这个强大的文本编辑命令,但是他只能生成新文件或打印到screen上(或许sed也具有修改原文件的功能,小的才疏学浅,尚不知道,烦请大家告诉我),但在perl里却有这么一个命令$^I 例子: 1 #!/usr/bin/perl 2 use strict; 3 $^I=""; 4 while(<>){ 5 s/^rate.*/rate=0/; 6 s/^testMode.*/testMode=0/; 7 p

perl 多fasta文件匹配,并提取匹配文件第一条序列

目标如题,有多个fasta文件和一个文件名列表,将文件名列表中包含的文件匹配出来并提取第一条序列合并成一个fa文件. 这个采用perl实现,用法和代码如下: 1 #!/usr/bin/perl -w 2 use strict; 3 4 sub usage{ 5 die "usage:perl $0 <fa.list> <Fasta_Dir> <merged.fa>\n",unless(@ARGV==3); 6 } 7 usage(); 8 9 ope