我对 Perl 有点陌生,并希望使用它来从我的 BAM(对齐)文件中提取特定长度的读取。
BAM 文件包含长度为 19 到 29 nt 的读取。这是前 2 次读取的示例:
YT:Z:UUA00182:193:HG2NLDMXX:1:1101:29884:1078 0 3R 6234066 42 22M * 0 0 TCACTGGGCTTTGTTTATCTCA FF:FFFF,FFFFFFFF:FFFFF AS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:22
YT:Z:UUA00182:193:HG2NLDMXX:1:1101:1777:1094 16 4 1313373 1 24M * 0 0 TCGCATTCTTATTGATTTTCCTTT FFFFFFF,FFFFFFFFFFFFFFFF AS:i:0 XS:i:0 XN:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:24
我只想提取那些长度为 21 nt 的内容。
我尝试使用以下代码执行此操作:
my $string = <STDIN>;
$length = samtools view ./file.bam | head | perl -F'\t' -lane'length @F[10]';
if ($length == 21){
print($string)
}
但是,该程序没有给出任何结果......有人可以建议这样做的正确方法吗?