Получение данных из fastq от генератора - PullRequest
1 голос
/ 06 марта 2019

У меня есть задание на тренинге, которое я должен прочитать и отфильтровать «хорошие» чтения больших fastq файлов. Он содержит заголовок, строку днк, знак + и некоторые символы (качества каждой строки днк). Пример:

@ hhhhhhhh
ATGCGTAGGGG
+
IIIIIIIIIIIII

Я опробовал, получил работающий код, сохранив его в словаре Python. Но оказалось, что оригинальные файлы огромны, и я переписал код, чтобы дать генератор. Это сработало для уменьшенной выборки. Но мне было интересно, если это хорошая идея, чтобы получить все данные и фильтрацию в словаре. У кого-нибудь есть идея получше? Я спрашиваю, потому что я делаю это сам. Я начинаю изучать Python в течение нескольких месяцев, и я все еще учусь, но я делаю один. Потому что здесь я прошу советы и помощь, и извините, если иногда я задаю глупые вопросы. заранее спасибо. Пауло Я получил некоторые идеи из кода в Biostar:

import sys
import gzip

filename = sys.argv[1]

def parsing_fastq_files(filename):
    with gzip.open(filename, "rb") as infile:
        count_lines = 0
            for line in infile:
            line = line.decode()
            if count_lines % 4 == 0:
                ids = line[1:].strip()
                yield ids
            if count_lines == 1:
                reads = line.rstrip()
                yield reads
        count_lines += 1

total_reads = parsing_fastq_files(filename)
print(next(total_reads))
print(next(total_reads))

Теперь мне нужно выяснить, как фильтровать данные, используя 'if value.endswith (' expression '):', но если я, например, использую dict, но это мое сомнение, потому что количество ключей и значений.

1 Ответ

1 голос
/ 06 марта 2019

Так как это обучение вынуждает вас кодировать это вручную, и у вас есть код, который читает fastQ как генератор, теперь вы можете использовать любой показатель (возможно, по phredscore?), Который вы используете для определения качества чтения.Вы можете добавить каждое «хорошее» чтение к новому файлу, чтобы у вас не было много места в вашей рабочей памяти, если почти все чтения оказались хорошими.

Запись в файл является медленной операцией, поэтому вы можете подождать, пока у вас не будет, скажем, 50000 хороших последовательностей, а затем записать их в файл.

Извлечь https://bioinformatics.stackexchange.com/, если вымного занимаюсь программированием в области биоинформатики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...