Perl程序2:多样品覆盖度合并
合并*txt文件最后一列,并生成基因和样品的覆盖度矩阵,结果参考: gene.cov.xls
引用 皆我百晓生 小程序回复内容作答:
以下是一个Perl程序的示例,用于合并多个样品的覆盖度数据,并生成基因和样品的覆盖度矩阵。
#!/usr/bin/perl
use strict;
use warnings;
# 输入文件列表
my @files = qw(sample1.txt sample2.txt sample3.txt);
# 存储基因和样品的覆盖度数据
my %gene_coverage;
# 读取每个文件的最后一列数据
foreach my $file (@files) {
(my $fh, "<", $file) or die "Cannot file $file: $!";
while (my $line = <$fh>) {
chomp $line;
my @fields = split /\t/, $line;
my $gene = $fields[0];
my $coverage = $fields[-1];
push @{$gene_coverage{$gene}}, $coverage;
}
close($fh);
}
# 输出覆盖度矩阵
(my $output_fh, ">", "gene.cov.xls") or die "Cannot file gene.cov.xls: $!";
print $output_fh "Gene\t", join("\t", @files), "\n";
foreach my $gene (sort keys %gene_coverage) {
print $output_fh "$gene\t", join("\t", @{$gene_coverage{$gene}}), "\n";
}
close($output_fh);
print "Coverage matrix generated successfully!\n";
请将上述代码保存为一个名为merge_coverage.pl
的文件,并将需要合并的样品的覆盖度数据文件命名为sample1.txt
,sample2.txt
,sample3.txt
等。然后在Linux终端中运行以下命令来执行Perl程序:
perl merge_coverage.pl
执行完成后,将生成一个名为gene.cov.xls
的文件,其中包含了基因和样品的覆盖度矩阵。