2015-01-21 1 views
-1

Пример файла одног здесь:Файл SAM для FASTA с awk или sed?

@SQ SN:gi|669687444|gb|KJ769480.1| LN:1200 
@SQ SN:gi|669687442|gb|KJ769479.1| LN:900 
@SQ SN:gi|669687440|gb|KJ769478.1| LN:1162 
@SQ SN:gi|669687438|gb|KJ769477.1| LN:1074 
@SQ SN:gi|669687436|gb|KJ769476.1| LN:1194 
@SQ SN:gi|669687434|gb|KJ769475.1| LN:1074 
@SQ SN:gi|669687432|gb|KJ769474.1| LN:1194 
@SQ SN:gi|669687430|gb|KJ769473.1| LN:1074 
@SQ SN:gi|669687428|gb|KJ769472.1| LN:1194 
@SQ SN:gi|669687426|gb|KJ769471.1| LN:1189 
@SQ SN:gi|669687424|gb|KJ769470.1| LN:1074 
@SQ SN:gi|669687422|gb|KJ769469.1| LN:370 
@PG ID:bwa PN:bwa VN:0.7.10-r789 CL:bwa mem /ibers/ernie/home/thh32/Scratch/Hidden_virome/Against_NCBI_viral/Sweetspot/bwa_NCBI_viral_nucl test.fa 
Rank10_clean_2213:4:1101:3636:2018 4 * 0 0 * * 0 0 AAACCATTCGCTTCCTTTAAATCTATCTGTTATTTCCCTTAAATAATTTGAACCATGCGAAGCAATATAAGGATTTAAGACGAAACAATTCTTTTCTCT * AS:i:0 XS:i:0 
Rank10_clean_2213:4:1101:3508:2062 4 * 0 0 * * 0 0 TCGCTATGCTTACTCCAATGTGGCGTACCAGTGTGCGAAGCTGATGCGCAAACCACGGGAAAAGGAGAAACTCTATCGGTGGATCGTGGATATGGAATTCAAATCCGGTGAGATCCC * AS:i:0 XS:i:0 
Rank10_clean_2213:4:1101:1470:2237 4 * 0 0 * * 0 0 GCGGAGCATATCCCCTTGCGTCCTGGACGGCGTGCCCGCATTCATGGGCGGCCACGGCCGCAGCTGCGATGGAATTCATCCCATACACGCTTTCTGAAAGGTTTACGGTCTTGCTCCTGGGATCG * AS:i:0 XS:i:0 
Rank10_clean_2213:4:1101:1540:2114 4 * 0 0 * * 0 0 GCGCGCAAGGTCCCGCGGATACTGGTCTGCCATATCTCCAACCCGCCCCTTAAGCGTGATGACGAAATGATCTACCCGAAAAGCTCAGCCGGGTTCCATCCCGGCAACGACGCGCCGCG * AS:i:0 XS:i:0 

Wanted выход:

>Rank10_clean_2213:4:1101:7988:2027 
GCCATCTCCAACCTCACCACCGGTAGCGGCAACCAGATGAGCTACAACCTCATCGCCATCCTTTGCGGCTTGATCGCCATGGCCGTCACCGCAATCTGCGCTCACTACGGCAAAAAGACCGTCAGCTTAATCCCATTCGTCCTTGGCATGTGCGCCGGTTATGTCGCGGCC 
>Rank10_clean_2213:4:1101:6459:2053 
TCACCACTTATTGCATCACCATACACATCAGTTACTGTGATTGTTACTGTGATGTTACCATCGATAGAGGGGTTATAATCTGAACATTCAATGTTTGGTATACTTGTGCTTAACAAAGTAACATCAGATTTCAATGTGTCAATTCTGCTATCCCCTGTTTGAGTATTACTCCCCCAAACCT 
CTGTATTCAAGTTACTAATCTTCGGTGTGACATCTCTGCTAATCACACTTGCCACA 
>Rank10_clean_2213:4:1101:7962:2142 
CGGTCCACCGAGAAAGGATGCTCCCTCAAAGCCTCAGATAGCGAAGGTGGAGACAGGACAAAAGAAGAAACCCCCCCCCCCACCCCCCCCC 
>Rank10_clean_2213:4:1101:8018:2112 
GTGAAACGCCTCGCCGACTCTCTCCGCCACCCGGTAATAGCCGTGGGTGTACGGATCAAACGCAATGGCGTCCACAAGAGACATATCGACCTTGTCACCGGCCATGACGCGCTCGTCTGCCGTGACATTGACGACCTTGCCGATGACGCCGAC 
>Rank10_clean_2213:4:1101:2807:2211 
TGAAAGTTGACATAGGAACCTGTGGAAGCATTGTAGTTAATGAGCGTTTTTTTTAAGTCATCAAAGTTATTTTTTAAGTTATGACGGCGGATATAATCCTGGAACTTGGGATTGACTATCCATTTATCAAAACACTGATCAAGAACAGTGCTTTGAATAAGCTCAGGTGAAGCATTGACTT 
CAAATCCTGGCATAACACCTACAAGATAGCCATATTTCTCAAGTAATGCCT 

Я никогда не использовал СЭД или AWK до и я действительно смущен, как они работают, так что если кто-то может объяснить как сделать это, что было бы потрясающе.

Спасибо, Том

+0

Что вы желаемый результат? – ShellFish

+0

Обновлен вопрос, чтобы привести пример выхода fatsa – Tom

+1

Если SAM и FASTA являются стандартными форматами, то вполне вероятно, что для этого уже есть инструменты. Возможно, стоит взглянуть на [BioPerl] (http://www.bioperl.org/wiki/HOWTO:Beginners), который может иметь что-то полезное встроенное. –

ответ

3

Удалить строки, начинающиеся с @ используя sed d так: sed '/^@/d' The d стенды для удаления и часть между косой чертой является регулярное выражение для соответствия (т.е. начало строки ^ с последующим @). Затем просто отформатируйте другие строки с помощью следующей замены: sed 's/^\([^ ]*\)[^ATGC]*\([ATGC]*\)[ :*a-zA-Z0-9]*$/>\1\n\2/'. Эта команда вставляет новую строку перед последовательностью A, T, G или Cs. И добавляет > перед исходной строкой. Части между \(\) представляют собой группы, которые могут быть заменены с использованием \1 или \2 в зависимости от индекса захваченной группы. Команда sed будет искать начало строки, за которой следует несколько пробелов (т. Е. Нечетные строки вашего вывода). Затем, начиная с следующего пробела, он будет искать несколько символов не AGTC до тех пор, пока не появится строка СЛКП. Мы поймаем эту последовательность в группе (группа 2). После этой последовательности может быть несколько пробелов, алфавитных символов и много чего ([ :*a-zA-Z0-9]), пока не будет согласован конец строки $. Теперь мы берем только первую группу и вторую группу и вставляем новую строку между ними /\1\n\2/.

Все, что вам нужно сделать, это вставить данные maxscore и т. Д. Я не могу найти, откуда вы получаете эту информацию.

Say вход находится в файле с именем sam:

$ sed '/^@/d; s/^\([^ ]*\)[^ATGC]*\([ATGC]*\)[ :*a-zA-Z0-9]*$/>\1\n\2/' sam 
>Rank10_clean_2213:4:1101:3636:2018 
AAACCATTCGCTTCCTTTAAATCTATCTGTTATTTCCCTTAAATAATTTGAACCATGCGAAGCAATATAAGGATTTAAGACGAAACAATTCTTTTCTCT 
>Rank10_clean_2213:4:1101:3508:2062 
TCGCTATGCTTACTCCAATGTGGCGTACCAGTGTGCGAAGCTGATGCGCAAACCACGGGAAAAGGAGAAACTCTATCGGTGGATCGTGGATATGGAATTCAAATCCGGTGAGATCCC 
>Rank10_clean_2213:4:1101:1470:2237 
GCGGAGCATATCCCCTTGCGTCCTGGACGGCGTGCCCGCATTCATGGGCGGCCACGGCCGCAGCTGCGATGGAATTCATCCCATACACGCTTTCTGAAAGGTTTACGGTCTTGCTCCTGGGATCG 
>Rank10_clean_2213:4:1101:1540:2114 
GCGCGCAAGGTCCCGCGGATACTGGTCTGCCATATCTCCAACCCGCCCCTTAAGCGTGATGACGAAATGATCTACCCGAAAAGCTCAGCCGGGTTCCATCCCGGCAACGACGCGCCGCG 
+0

Спасибо за это, но когда я использую код это данный выход:> Rank10_clean_2213: 4: 1101: 13998: 2091 * * \t * CAGCATTATCTGATGAGAATGTAACCAAGTGGGCTTTCAACGCTTCCTTTGAGCGAATTTGTCTCTCCAACTGGCTGAAGAAACATCGCCCGGAATACTTCACCGGCTACAGCATCCCGGAGGATCCCGCCGGTCAGTACCTGAATCCGGCATCCTGGAAATGTACCATGATCTGGTCAGCCTATATGGGACTGCCGCTCTCTCTGGAAGGTGTCGGAACCGTCC \t * \t AS: I : 0 \t XS: i: – Tom

+0

Попробуйте прямо сейчас. tenchars – ShellFish

+0

же ошибка встречающийся с:> Rank10_clean_2213: 4: 1101: 13998: 2091 * * \t * CAGCATTATCTGATGAGAATGTAACCAAGTGGGCTTTCAACGCTTCCTTTGAGCGAATTTGTCTCTCCAACTGGCTGAAGAAACATCGCCCGGAATACTTCACCGGCTACAGCATCCCGGAGGATCCCGCCGGTCAGTACCTGAATCCGGCATCCTGGAAATGTACCATGATCTGGTCAGCCTATATGGGACTGCCGCTCTCTCTGGAAGGTGTCGGAACCGTCC \t * \t AS: я: 0 \t XS: I: 0 – Tom

2

раствора с AWK

awk '/^@/{ next; } { print ">"$1; print $10 }' input.sam 

вы получаете

 
>Rank10_clean_2213:4:1101:3636:2018 
AAACCATTCGCTTCCTTTAAATCTATCTGTTATTTCCCTTAAATAATTTGAACCATGCGAAGCAATATAAGGATTTAAGACGAAACAATTCTTTTCTCT 
>Rank10_clean_2213:4:1101:3508:2062 
TCGCTATGCTTACTCCAATGTGGCGTACCAGTGTGCGAAGCTGATGCGCAAACCACGGGAAAAGGAGAAACTCTATCGGTGGATCGTGGATATGGAATTCAAATCCGGTGAGATCCC 
>Rank10_clean_2213:4:1101:1470:2237 
GCGGAGCATATCCCCTTGCGTCCTGGACGGCGTGCCCGCATTCATGGGCGGCCACGGCCGCAGCTGCGATGGAATTCATCCCATACACGCTTTCTGAAAGGTTTACGGTCTTGCTCCTGGGATCG 
>Rank10_clean_2213:4:1101:1540:2114 
GCGCGCAAGGTCCCGCGGATACTGGTCTGCCATATCTCCAACCCGCCCCTTAAGCGTGATGACGAAATGATCTACCCGAAAAGCTCAGCCGGGTTCCATCCCGGCAACGACGCGCCGCG 

из документации sam format, если у вас есть флаг 8 в второй столбец - это несвязанная последовательность, лучше

awk '/^@/{ next; } 
    { if(and(int($2),8)){ 
     next; 
     } 
     print ">"$1; 
     print $10 }' input.sam 

или

awk '/^@/{ next; } and(int($2),8){next;} { print ">"$1; print $10 }' input.sam 

 Смежные вопросы

  • Нет связанных вопросов^_^