Я немного новичок в Perl и хочу использовать его для извлечения операций чтения определенной длины из моего файла BAM (выравнивания).
Файл BAM содержит риды длиной от 19 до 29 нт. Вот пример первых двух чтений:
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 нт.
Я пытаюсь сделать это с помощью следующего кода:
my $string = <STDIN>;
$length = samtools view ./file.bam | head | perl -F'\t' -lane'length @F[10]';
if ($length == 21){
print($string)
}
Однако программа не дает никакого результата... Может ли кто-нибудь предложить правильный способ сделать это?