Извлечь заголовок последовательности для заданной последовательности в файле fasta - PullRequest
0 голосов
/ 18 октября 2018

У меня есть файл fasta (myfasta.fasta), подобный этому:

>aat.2.2344.a
ATTGCCGGTTTAATATTA
>aat.2.d2344.acc
ATTGCCGGTTTAATAAA
>aat.2.2bb344.a
ATTGCCGGTTTAATAGGAGAGAATT
>aat.2.2ccc344.a
ATTGCCGGTTTAATAGGGAG
>aat.2.2344.acc
ATTGCCGGTTTAATAAA

У меня также есть текстовый файл my.txt, который содержит последовательность, которая соответствует последовательности в файле fasta выше:

ATTGCCGGTTTAATAAA

На основе этой последовательности я хочу извлечь все совпадающие идентификаторы для этой последовательности.Может кто-нибудь, пожалуйста, помогите мне с этим?Спасибо!

Результат, который я хочу получить:

>aat.2.2344.acc
>aat.2.d2344.acc

Ответы [ 5 ]

0 голосов
/ 21 октября 2018

Используйте Python!Создайте файл с именем extract_fasta.py.Вставьте это в файл:

lines = open("myfasta.fasta").readlines()

for line in lines:
    if line[0] == '>':
        print(line[1:])

Затем откройте терминал и запустите «python extract_fasta.py».

0 голосов
/ 19 октября 2018

Использование grep и sed :

grep --no-group-separator -B 1 "ATTGCCGGTTTAATAAA" my.txt | sed -n 1~2p
>aat.2.d2344.acc
>aat.2.2344.acc

Подробнее см. Ответ @ QuoraFeans .

0 голосов
/ 19 октября 2018

Это может работать для вас (GNU sed):

sed 's|.*|/^&$/{x;p}|' keyFile | sed -n -e 'h;n' -f - fastaFile

Создайте сценарий sed из файла ключей и запустите его для файла fasta.

0 голосов
/ 19 октября 2018

Вас может заинтересовать bioawk, это адаптированная версия awk, которая настроена на обработку файлов fasta

bioawk -c fastx -v str="ATTGCCGGTTTAATAAA" '($seq == str) { print ">"$name }' file.fasta

Примечание: Основан BioAwk на awk Брайана Кернигана , который задокументирован в "Языке программирования AWK" Аль Ахо, Брайаном Керниганом и Питером Вайнбергером (Addison-Wesley, 1988, ISBN 0-201-07981-X).Я не уверен, совместима ли эта версия с POSIX .

0 голосов
/ 19 октября 2018

при условии, что ваш формат входных данных соответствует примеру

$ awk -v v='ATTGCCGGTTTAATAAA' '/>/{id=$0} $1==v{print id}' file

>aat.2.d2344.acc
>aat.2.2344.acc
...