Преобразование FASTQ к FASTA с SED/AWK

Или

   Update Table set 
     title = Replace(Replace(title, '.', ''), '-', '')
   Where title Like '[ab][.-]1'
18
задан kvantour 12 December 2018 в 11:29
поделиться

8 ответов

Вот решение части проблемы «пропускать каждую вторую строку», которую я только что узнал от SO:

while read line
do
    # print two lines
    echo "$line"
    read line_to_print
    echo "$line_to_print"

    # and skip two lines
    read line_to_skip
    read line_to_skip
done

Если все, что нужно сделать это изменить один @ на > , тогда я думаю

while read line
do
    echo "$line" | sed 's/@/>/'
    read line
    echo "$line"

    read line_to_skip
    read line_to_skip
done

выполнит свою работу.

1
ответ дан 30 November 2019 в 05:59
поделиться
4
ответ дан 30 November 2019 в 05:59
поделиться

Примерно так:

awk 'BEGIN{a=0}{if(a==1){print;a=0}}/^@/{print;a=1}' myFastqFile | sed 's/^@/>/'

должно работать.

1
ответ дан 30 November 2019 в 05:59
поделиться

just awk , no need other tools

# awk '/^@SR/{gsub(/^@/,">",$1);print;getline;print}' file
>SRR018006.2016 GA2:6:1:20:650 length=36
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006.19405469 GA2:6:100:1793:611 length=36
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
7
ответ дан 30 November 2019 в 05:59
поделиться

sed ain't dead. If we're golfing:

sed '/^@/!d;s//>/;N'

Or, emulating http://www.ringtail.tsl.ac.uk/david-studholme/scripts/fastq2fasta.pl posted by Pierre, which only prints the first word (the id) from the first line and does (some) error handling:

#!/usr/bin/sed -f
# Read a total of four lines
$b error
N;$b error
N;$b error
N
# Parse the lines
/^@\(\([^ ]*\).*\)\(\n[ACGTN]*\)\n+\1\n.*$/{
  # Output id and sequence for FASTA format.
  s//>\2\3/
  b
}
:error
i\
Error parsing input:
q

There seem to be plenty of existing tools for converting these formats; you should probably use these instead of anything posted here (including the above).

9
ответ дан 30 November 2019 в 05:59
поделиться

Как подробно описано в Cock, et al (2009) NAR, многие из этих решений неверны, поскольку "символ-маркер '@' (ASCII 64) может встречаться в любом месте качественной строки. Это означает, что любой синтаксический анализатор не должен рассматривать строку, начинающуюся с '@', как обозначающую начало следующей записи, без дополнительной проверки соответствия длины строки качества длине последовательности."

Подробности см. в http://ukpmc.ac.uk/articlerender.cgi?accid=PMC2847217.

9
ответ дан 30 November 2019 в 05:59
поделиться
awk 'BEGIN{P=1}{if(P==1||P==2){gsub(/^[@]/,">");print}; if(P==4)P=0; P++}' data

>SRR018006.2016 GA2:6:1:20:650 length=36
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
>SRR018006.19405469 GA2:6:100:1793:611 length=36
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

ниже

awk '{gsub(/^[@]/,">"); print}' data

, где данные - ваш файл данных. Я получил:

>SRR018006.2016 GA2:6:1:20:650 length=36
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGN
+SRR018006.2016 GA2:6:1:20:650 length=36
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+!
>SRR018006.19405469 GA2:6:100:1793:611 length=36
ACCCGCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+SRR018006.19405469 GA2:6:100:1793:611 length=36
7);;).;);;/;*.2>/@@7;@77<..;)58)5/>/
1
ответ дан 30 November 2019 в 05:59
поделиться

Я думаю, что с gnu grep это можно сделать так:

grep -A 1 "^@" t.txt | grep -v "^--" | sed -e "s/^@/\>/"
1
ответ дан 30 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: