Я использую следующий один лайнер, чтобы перечислять вхождения комбинаций ATCG
, образуя цепочку длиной 6. Он отлично работает в стороне от того, чтобы не печатать событие из 0 матчей. Есть ли способ изменить регулярное выражение или другую часть на то, где он будет печатать что-то вроде «0 ATTTAG»?Как подсчитать количество вхождений комбинаций символов n-длины в строке
#!/bin/bash
for file in e_coli.fa
do
base=$(basename $file .fa)
cat $file | perl -nE 'say for /(?<=([ATCG]{6}))/g' \
| sort | uniq -c >> ${base}_hexhits_6mer.txt
done
stdout:
465 AAAAAA
607 AAAAAC
661 AAAAAG
581 AAAAAT
563 AAAACA
807 AAAACC
770 AAAACG
373 AAAACT
663 AAAAGA
1213 AAAAGC
Это может помочь: http://stackoverflow.com/questions/4736626/how-can-i-generate-all-ordered-combinations-of-length-k-in-perl – fugu
Регулярное выражение не может совпадать чего нет. –
Существует более 4000 различных шестисимвольных комбинаций из четырех символов. Вы действительно хотите 4000 строк вывода, большинство из них нули? – Borodin