Проект: парсинг UniProt: различия между версиями
Перейти к навигации
Перейти к поиску
(Новая страница: «UniProt — база знаний о протеинах. Она связывает сами протеины с последовательностями гено...») |
Denis.s (обсуждение | вклад) Нет описания правки |
||
(не показано 7 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
UniProt — база знаний о протеинах. Она связывает сами протеины с последовательностями генов, кодирующими их. | [https://www.uniprot.org/ UniProt] — база знаний о протеинах. Она связывает сами протеины с последовательностями генов, кодирующими их. | ||
Она сохранена в одном маленьком текстовом файле и я решил, что пример парсинга этого файла на Python может быть полезен. | Она сохранена в одном маленьком текстовом файле и я решил, что пример парсинга этого файла на Python может быть полезен. | ||
Структурно, файл состоит из описания, заголовка таблицы, контента и лицензии. Мы отделяем от файла всё лишнее, потому, что так его можно читать построчно. | Структурно, файл состоит из описания, заголовка таблицы, контента и лицензии. Мы отделяем от файла всё лишнее, потому, что так его можно читать построчно. | ||
{{ | |||
Запрос экспертизы | |||
| text=Я не очень хорошо понимаю, почему в заголовке базы [https://www.uniprot.org/ UniProt] говорят только о первой хромосоме. | |||
| qualification=Биолог | |||
}} | |||
== Пример экспорта в JSON == | <nowiki>− Не помню откуда я вышел на файлы, но для каждой хромосомы существует свой отдельный файл вида https://www.uniprot.org/docs/humchr<nn>.txt, где <nn> ::= [0-9]{2} | [xy]</nowiki> [[Участник:Denis.s|Denis.s]] ([[Обсуждение участника:Denis.s|обсуждение]]) | ||
== Selenium == | |||
=== Пример экспорта в JSON === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Строка 45: | Строка 53: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Пример экспорта в CSV == | === Пример экспорта в CSV === | ||
Tab-delimited. | Tab-delimited. | ||
Строка 94: | Строка 102: | ||
main() | main() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== [[Racket]] == | |||
=== Сохранение отпарсенного в [[Tabtree]] === | |||
== Заметка о лицензии == | == Заметка о лицензии == | ||
Строка 101: | Строка 112: | ||
=== Creative commons === | === Creative commons === | ||
Вот сам текст лицензии из файла UniProt. "Copyrighted by the UniProt Consortium, see https://www.uniprot.org/terms. Distributed under the Creative Commons Attribution (CC BY 4.0) License" | Вот сам текст лицензии из файла UniProt. "Copyrighted by the UniProt Consortium, see https://www.uniprot.org/terms. Distributed under the Creative Commons Attribution (CC BY 4.0) License" | ||
[https://creativecommons.org/licenses/by/4.0/ Текст и описание] лицензии на сайте Creative Commons. | |||
[[Категория:Скрипты]] |
Текущая версия от 14:52, 16 марта 2021
UniProt — база знаний о протеинах. Она связывает сами протеины с последовательностями генов, кодирующими их.
Она сохранена в одном маленьком текстовом файле и я решил, что пример парсинга этого файла на Python может быть полезен. Структурно, файл состоит из описания, заголовка таблицы, контента и лицензии. Мы отделяем от файла всё лишнее, потому, что так его можно читать построчно.
Требуется информация от эксперта! |
---|
Запрос: Я не очень хорошо понимаю, почему в заголовке базы UniProt говорят только о первой хромосоме. |
Экспертиза: Биолог |
− Не помню откуда я вышел на файлы, но для каждой хромосомы существует свой отдельный файл вида https://www.uniprot.org/docs/humchr<nn>.txt, где <nn> ::= [0-9]{2} | [xy] Denis.s (обсуждение)
Selenium[править]
Пример экспорта в JSON[править]
#!/usr/bin/env python3
"""
Read and convert humchr01.txt items.
"""
import re
import json
def main():
"""
Load processed txt file with no header and license, scan, build JSON data, export.
"""
gene_filename = "humchr01_for_splitting.txt"
with open(gene_filename, 'r') as gene_file:
original_genes = gene_file.read().splitlines()
new_genes = []
for gene in original_genes:
new_gene = {}
new_gene['gene_name'], remainder = re.split("\s+", gene, maxsplit=1)
new_gene['chromosomal_position'], remainder = re.split("\s+", remainder, maxsplit=1)
new_gene['swiss_prot_ac'], remainder = re.split("\s+", remainder, maxsplit=1)
new_gene['swiss_prot_ename'], remainder = re.split("\s+", remainder, maxsplit=1)
mim_code = ""
description = ""
if re.match(r'^\d+', remainder):
new_gene['mim_code'], description = re.split("\s+", remainder, maxsplit=1)
else:
new_gene['description'] = remainder
new_genes.append(new_gene)
with open("humchr01.json", "w") as humchr_json_file:
json.dump(new_genes, humchr_json_file, ensure_ascii=False, sort_keys=True, indent=4)
if __name__ == '__main__':
main()
Пример экспорта в CSV[править]
Tab-delimited.
#!/usr/bin/env python3
"""
Read and convert humchr01.txt items.
"""
import re
import csv
def main():
"""
Load processed txt file with no header and license, scan, build CSV data, export.
"""
gene_filename = "humchr01_for_splitting.txt"
with open(gene_filename, 'r') as gene_file:
original_genes = gene_file.read().splitlines()
new_genes = []
for gene in original_genes:
new_gene = {}
new_gene['gene_name'], remainder = re.split("\s+", gene, maxsplit=1)
new_gene['chromosomal_position'], remainder = re.split("\s+", remainder, maxsplit=1)
new_gene['swiss_prot_ac'], remainder = re.split("\s+", remainder, maxsplit=1)
new_gene['swiss_prot_ename'], remainder = re.split("\s+", remainder, maxsplit=1)
new_gene['mim_code'] = ""
new_gene['description'] = ""
if re.match(r'^\d+', remainder):
new_gene['mim_code'], description = re.split("\s+", remainder, maxsplit=1)
else:
new_gene['description'] = remainder
new_genes.append(new_gene)
with open("humchr01.csv", 'wb') as csv_file:
writer = csv.writer(csv_file, delimiter='\t', quotechar='\\', quoting=csv.QUOTE_MINIMAL)
for gene in new_genes:
writer.writerow([
gene['gene_name'],
gene['chromosomal_position'],
gene['swiss_prot_ac'],
gene['swiss_prot_ename'],
gene['mim_code'],
gene['description']
])
if __name__ == '__main__':
main()
Racket[править]
Сохранение отпарсенного в Tabtree[править]
Заметка о лицензии[править]
UniProt хотят, чтобы на них ссылались в научных работах. На образец можно посмотреть, пройдя по ссылке.
Creative commons[править]
Вот сам текст лицензии из файла UniProt. "Copyrighted by the UniProt Consortium, see https://www.uniprot.org/terms. Distributed under the Creative Commons Attribution (CC BY 4.0) License"
Текст и описание лицензии на сайте Creative Commons.