Изменить текст в данные
Сначала я бы предложил обработать ваши файлы и сохранить их как базу данных для облегчения дальнейшей обработки. Вы можете извлечь данные из этих файлов, например. следующими способами:
file1 = open('some_filename.txt')
file1_lines = [filter(len, line.split(' ')) for line in file1.readlines()]
и file1_lines
будет содержать что-то похожее на это:
[['gene_id', 'start', 'stop'], ['grf4', '1245', '1365'], ['fgt89', '3089', '4524'], ['tig3' , '45600', '46800']]
, что означает, что у вас есть данные, которые вы можете вставить в базу данных.
Вставить данные в базу данных
Теперь вы должны вставить данные в базу данных, чтобы их можно было легко обработать с помощью соответствующих инструментов (в данном случае СУБД). Я предлагаю использовать SQLite (см. Встроенный модуль sqlite3 для Python ). Если вы не знаете SQL, задайте ему конкретные вопросы. Но я считаю, что база данных - это форма, наиболее подходящая для вашей задачи.
Извлечение необходимых данных из базы данных
После того, как у вас есть данные в базе данных, становится легко получить нужные данные. Запрос может выглядеть следующим образом (запрос, очевидно, не был проверен, но выглядит нормально и должен соответствовать вашим потребностям, если имена совпадают с именами из вашей базы данных):
SELECT `ranges`.`gene_id`, `ranges`.`start`, `ranges`.`stop`,
`nucleotides`.`position`, `nucleotides`.`nucleotide`, `nucleotides`.`support`
FROM `ranges`
JOIN `nucleotides`
ON (
(`ranges`.`start` < `nucleotides`.`position`)
AND
(`nucleotides`.`position` < `ranges`.`start`)
)
ORDER BY `ranges`.`gene_id` ASC, `nucleotides`.`position` ASC
Что даст вам нужные данные в порядке gene_id
по возрастанию, затем position
по возрастанию.
Единственная задача, которая останется, - это вывод данных в файл. Для этого я предлагаю использовать format()
.
Основная информация
Итак, ваша задача состоит в основном из следующих частей:
- Превратить текст (содержимое файлов) в данные (списки переменных).
- Создать базу данных с правильной структурой.
- Вставка данных из файлов в базу данных (убедитесь, что целые числа и числа с плавающей запятой хранятся как таковые, а не как строки).
- Сделайте запрос к базе данных, как я упоминал выше.
- При необходимости вывести данные в файл в виде текста (используя форматирование строки -
format()
).
Это помогло? Есть вопросы?