Perl脚本——stat.pl(统计fasta文件序列长度)
相比Perl语言,现在python用的多。但是perl依旧是生信学习的一门课程,还是有人在写,所以你至少要会读。
#!/use/bin/perl #perl解析器
$inputFile = $ARGV[0]; #输入文件:fasta
$outputDir = $ARGV[1]; #输出目录
if (@ARGV<2) {
print "inputfile and outputdir are required!\n";
exit 1;
}
open(DATA,"$inputFile") or die("Could not open file!!!");
#获取fasta文件名
@input = split(/\//,$inputFile); @fastaname = split(/\./,$input[-1]);
#生成输出文件名
$outputFile = join ("/", $outputDir, join("_", $fastaname[0], "length.txt"));
open(RESULT,">$outputFile");
my%hash,$read;
foreach $line (<DATA>) {
chomp($line);
if($line =~ /^>/){ #判断是序列名称行
$read = $line;
$hash{$read} = 0;
}else{
$hash{$read} += length($line);
}
}
my$Total_read = 0,$Total_length = 0;
foreach $k(keys %hash){
$Total_length = $Total_length+$hash{$k};
$Total_read = $Total_read+1;
}
print "Total_read:\t$Total_read\nTotal_length:\t$Total_length\n";
print RESULT "Total_read:\t$Total_read\nTotal_length:\t$Total_length\n";
close(DATA);close(RESULT);
上面是我经常书写的perl文件的格式,当然有些不标准,仅供参阅。

perl执行问题总结
问题一
Can’t locate Cegma.pm in @INC (you may need to install the Cegma module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./cegma line 34.
这是perl模块没有在系统配置中,用perl -V查看。如果是下载的软件,这个文件会在lib/目录下,配置环境变量即可
对于perl模块问题,另一篇博文https://blog.csdn.net/weixin_44616693/article/details/125160834,可以查看
- List item
本文介绍了一个Perl脚本stat.pl,用于统计FASTA文件中序列的长度。虽然Python更流行,但Perl在生物信息学学习中仍有其地位。脚本演示了如何打开文件、处理数据和输出总序列数和长度。同时提到了一个常见的Perl模块安装问题及其解决方法。
&spm=1001.2101.3001.5002&articleId=124509864&d=1&t=3&u=faa8718ff930473d9be383ea609f24de)
3020

被折叠的 条评论
为什么被折叠?



