Прочитайте квали-файл из fastq и рассчитайте среднее - PullRequest
0 голосов
/ 23 октября 2018

Я немного понимаю bash и R, но недостаточно для написания sth.Я взял файл qual из моего файла FastQ с помощью PRINSEQ, и у меня есть что-то вроде этого:

>R8ABE:00036:00036
20 20 20 25 15 25 30 30 25 25 25 15 20 15 20 20 25 25 15 21 15 21 21 26 34 36 25 25 28 25 25 21 31 25 25 25 11 25 25 25 25 13 23 13 13 15 13 13 23 26 26 21 25 19 25 19 25 19 25 25
11 21 21 21 21 15 21 21 29 21 21 15 21 21 21 13 13 23
>R8ABE:00038:00039
20 20 15 20 25 15 20 23 14 13 14 14  8 13 23 23  8 13 13 13 13 13  7 13 13 13  8 21 34
>R8ABE:00038:00042
23 26 27 30 34 15 25 25 20 25 25 30 31 33 33 39 39 16 25 25 25 25 25 12 25 25 19 25
>R8ABE:00038:00047
25 25 25 25 19 13 14 14  8 13 13 13  8 13 13  8 13 13 20 20 30 30 34 34 16 25 19 25 25 19 21 15 21 15 21 31 21 25 25 25 15 25 30 30 19 27 29 36 37 36 36 32 35 33 33 33 19 25 25 25
25 25 25 25 25 34 28 28 24 15 15 13  9 13 13  8 13 23 23 17 23 23 34 15 20 15 21 21 21 21 15 21 25 25 25 25 25 28 22 25 27 28 28 10 15 15 16 16 15 15 15 25 25 30 30 25 25 19 25 25

Я хотел бы рассчитать среднее значение каждой последовательности.Имена после «>» не обязательны.Для меня важно иметь эти «средства» в исходном порядке, например, список, подобный следующему:

21.62
22.16
30.88
.
.

Не имеет значения, существуют ли десятичные числа.

Спасибо!

1 Ответ

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

Вы можете использовать скрипт Python, например, так:

from __future__ import division ## I'm assuming you're using python 2
with open('my_quality_file.fastq') as fh:
  for line in fh:
    if line.startswith('>'):
      continue
    scores = map(float, line.strip().split())
    print sum(scores) / len(scores)

Для каждой строки с оценками качества она преобразуется в список с плавающей запятой, а затем печатает среднее арифметическое значение.

...