Биопайтон

Коллекция программных инструментов Python с открытым исходным кодом для вычислительной биологии
Биопайтон
Оригинальный автор(ы)Чепмен Б., Чанг Дж. [1]
Первоначальный выпуск17 декабря 2002 г. ; 22 года назад ( 2002-12-17 )
Стабильный релиз
1.81 [2] 
Репозиторийhttps://github.com/biopython/biopython [3] 
Написано вПитон и Си
ПлатформаКроссплатформенный
ТипБиоинформатика
ЛицензияЛицензия Биопита
Веб-сайтbiopython.org

Проект Biopython представляет собой коллекцию некоммерческих инструментов Python с открытым исходным кодом для вычислительной биологии и биоинформатики , созданную международной ассоциацией разработчиков. [1] [4] [5] Он содержит классы для представления биологических последовательностей и аннотаций последовательностей , а также может читать и записывать в различные форматы файлов. Он также обеспечивает программные средства доступа к онлайн- базам данных биологической информации , таким как базы данных NCBI . Отдельные модули расширяют возможности Biopython до выравнивания последовательностей , структуры белков , популяционной генетики , филогенетики , мотивов последовательностей и машинного обучения . Biopython является одним из ряда проектов Bio*, разработанных для сокращения дублирования кода в вычислительной биологии . [6]

История

Разработка Biopython началась в 1999 году, и он был впервые выпущен в июле 2000 года. [7] Он был разработан в течение схожего периода времени и с аналогичными целями других проектов, которые добавляли возможности биоинформатики к своим соответствующим языкам программирования, включая BioPerl , BioRuby и BioJava . Среди первых разработчиков проекта были Джефф Чанг, Эндрю Далк и Брэд Чепмен, хотя на сегодняшний день более 100 человек внесли свой вклад. [8] В 2007 году был создан похожий проект Python , а именно PyCogent . [9]

Первоначальная сфера применения Biopython включала доступ, индексацию и обработку файлов биологических последовательностей. Хотя это по-прежнему является основным направлением, в последующие годы добавленные модули расширили его функциональность, чтобы охватить дополнительные области биологии (см. Основные характеристики и примеры).

Начиная с версии 1.77, Biopython больше не поддерживает Python 2. [10]

Дизайн

Где это возможно, Biopython следует соглашениям, используемым в языке программирования Python, чтобы сделать его проще для пользователей, знакомых с Python. Например, Seqи SeqRecordобъектами можно манипулировать с помощью срезов , аналогично строкам и спискам Python. Он также разработан так, чтобы быть функционально похожим на другие проекты Bio*, такие как BioPerl. [7]

Biopython способен читать и записывать большинство распространенных форматов файлов для каждой из своих функциональных областей, а его лицензия является разрешительной и совместимой с большинством других лицензий на программное обеспечение, что позволяет использовать Biopython в различных программных проектах. [5]

Основные характеристики и примеры

Последовательности

Основная концепция в Biopython — это биологическая последовательность, и она представлена ​​классом Seq. [11] Объект Biopython Seqво многих отношениях похож на строку Python: он поддерживает нотацию среза Python, может быть объединен с другими последовательностями и является неизменяемым. Кроме того, он включает методы, специфичные для последовательности, и указывает конкретный используемый биологический алфавит.

>>> # Этот скрипт создает последовательность ДНК и выполняет некоторые типичные манипуляции >>> from  Bio.Seq  import  Seq >>> dna_sequence  =  Seq ( "AGGCTTCTCGTA" ,  IUPAC . unambiguous_dna ) >>> dna_sequence Seq('AGGCTTCTCGTA', IUPACUnambiguousDNA()) >>> dna_sequence [ 2 : 7 ] Seq('GCTTC', IUPACUnambiguousDNA()) >>> dna_sequence . reverse_complement () Seq('TACGAGAAGCCT', IUPACUnambiguousDNA()) >>> rna_sequence  =  dna_sequence . transcribe () >>> rna_sequence Seq('AGGCUUCUCGUA', IUPACUnambiguousRNA()) >>> rna_sequence . translate () Seq('RLLV', IUPACБелок())

Аннотация последовательности

Класс SeqRecordописывает последовательности, а также информацию, такую ​​как имя, описание и признаки в форме SeqFeatureобъектов. Каждый SeqFeatureобъект определяет тип признака и его местоположение. Типы признаков могут быть 'gene', 'CDS' (кодирующая последовательность), 'repeat_region', 'mobile_element' или другие, а положение признаков в последовательности может быть точным или приблизительным.

>>> # Этот скрипт загружает аннотированную последовательность из файла и просматривает часть ее содержимого. >>> from  Bio  import  SeqIO >>> seq_record  =  SeqIO . read ( "pTC2.gb" ,  "genbank" ) >>> seq_record . name 'NC_019375' >>> seq_record . description 'Providencia stuartii plasmid pTC2, complete sequence.' >>> seq_record . features [ 14 ] SeqFeature(FeatureLocation(ExactPosition(4516), ExactPosition(5336), strand=1), type='mobile_element') >>> seq_record . seq Seq("GGATTGAATATAACCGACGTGACTGTTACATTTAGGTGGCTAAACCCGTCAAGC...GCC", IUPACAmbiguousDNA())

Ввод и вывод

Biopython может читать и записывать в ряд распространенных форматов последовательностей, включая FASTA , FASTQ , GenBank, Clustal, PHYLIP и NEXUS . При чтении файлов описательная информация в файле используется для заполнения членов классов Biopython, таких как SeqRecord. Это позволяет преобразовывать записи одного формата файла в другие.

Очень большие файлы последовательностей могут превышать ресурсы памяти компьютера, поэтому Biopython предоставляет различные варианты доступа к записям в больших файлах. Они могут быть полностью загружены в память в структурах данных Python, таких как списки или словари , обеспечивая быстрый доступ за счет использования памяти. В качестве альтернативы файлы могут быть прочитаны с диска по мере необходимости, с более низкой производительностью, но с более низкими требованиями к памяти.

>>> # Этот скрипт загружает файл, содержащий несколько последовательностей, и сохраняет каждую из них в другом формате. >>> from  Bio  import  SeqIO >>> genomes  =  SeqIO . parse ( "salmonella.gb" ,  "genbank" ) >>> for  genome  in  genomes : ...  SeqIO . write ( genome ,  genome . id  +  ".fasta" ,  "fasta" )

Доступ к онлайн-базам данных

Через модуль Bio.Entrez пользователи Biopython могут загружать биологические данные из баз данных NCBI. Каждая из функций, предоставляемых поисковой системой Entrez , доступна через функции в этом модуле, включая поиск и загрузку записей.

>>> # Этот скрипт загружает геномы из базы данных нуклеотидов NCBI и сохраняет их в файле FASTA. >>> from  Bio  import  Entrez >>> from  Bio  import  SeqIO >>> output_file  =  open ( "all_records.fasta" ,  "w" ) >>> Entrez.email = "my_email@example.com" >>> records_to_download = [ "FO834906.1" , " FO203501.1" ] >>> for record_id in records_to_download : ... handle = Entrez.efetch ( db  = " nucleotide " , id = record_id , rettype = " gb " ) ... seqRecord = SeqIO.read ( handle , format = " gb " ) ... handle.close ( ) ... output_file.write ( seqRecord.format ( " fasta " ) )                  

Филогения

Рисунок 1: Укорененное филогенетическое дерево, созданное Bio.Phylo, показывающее взаимосвязь между гомологами Apaf-1 различных организмов [12]
Рисунок 2: То же дерево, что и выше, нарисованное без корней с помощью Graphviz через Bio.Phylo

Модуль Bio.Phylo предоставляет инструменты для работы с филогенетическими деревьями и их визуализации . Поддерживаются различные форматы файлов для чтения и записи, включая Newick , NEXUS и phyloXML . Обычные манипуляции с деревьями и обходы поддерживаются через объекты Treeи Clade. Примеры включают преобразование и сопоставление файлов деревьев, извлечение подмножеств из дерева, изменение корня дерева и анализ особенностей ветвей, таких как длина или оценка. [13]

Укорененные деревья можно рисовать в ASCII или с помощью matplotlib (см. рисунок 1), а библиотеку Graphviz можно использовать для создания неукорененных макетов (см. рисунок 2).

Схемы генома

Рисунок 3: Схема генов на плазмиде pKPS77 [14], визуализированная с помощью модуля GenomeDiagram в Biopython

Модуль GenomeDiagram предоставляет методы визуализации последовательностей в Biopython. [15] Последовательности могут быть нарисованы в линейной или круговой форме (см. Рисунок 3), и поддерживаются многие форматы вывода, включая PDF и PNG . Диаграммы создаются путем создания дорожек и последующего добавления к этим дорожкам признаков последовательности. Перебирая признаки последовательности и используя их атрибуты для решения, следует ли и как они будут добавлены к дорожкам диаграммы, можно осуществлять большой контроль над внешним видом окончательной диаграммы. Между различными дорожками можно нарисовывать перекрестные ссылки, что позволяет сравнивать несколько последовательностей на одной диаграмме.

Макромолекулярная структура

Модуль Bio.PDB может загружать молекулярные структуры из файлов PDB и mmCIF и был добавлен в Biopython в 2003 году. [16] Объект Structureявляется центральным для этого модуля, и он организует макромолекулярную структуру иерархическим образом: Structureобъекты содержат Modelобъекты, которые содержат Chainобъекты, которые содержат Residueобъекты, которые содержат Atomобъекты. Неупорядоченные остатки и атомы получают свои собственные классы DisorderedResidueи DisorderedAtom, которые описывают их неопределенные положения.

Используя Bio.PDB, можно перемещаться по отдельным компонентам файла макромолекулярной структуры, например, изучать каждый атом в белке. Можно проводить общие анализы, например, измерять расстояния или углы, сравнивать остатки и вычислять глубину остатков.

Популяционная генетика

Модуль Bio.PopGen добавляет поддержку Biopython для Genepop, программного пакета для статистического анализа популяционной генетики. [17] Это позволяет проводить анализ равновесия Харди-Вайнберга , неравновесия по сцеплению и других особенностей частот аллелей в популяции .

Этот модуль также может выполнять популяционно-генетическое моделирование с использованием теории коалесценции с программой fastsimcoal2. [18]

Оболочки для инструментов командной строки

Многие модули Biopython содержат оболочки командной строки для часто используемых инструментов, что позволяет использовать эти инструменты из Biopython. Эти оболочки включают BLAST , Clustal , PhyML, EMBOSS и SAMtools . Пользователи могут создавать подклассы универсального класса оболочки, чтобы добавить поддержку для любого другого инструмента командной строки.

Смотрите также

Ссылки

  1. ^ ab Chapman, Brad; Chang, Jeff (август 2000 г.). «Biopython: инструменты Python для вычислительной биологии». ACM SIGBIO Newsletter . 20 (2): 15– 19. doi : 10.1145/360262.360268 . S2CID  9417766.
  2. ^ "Release biopython-181: Commit Release 1.81 (#4233)" . Получено 22 апреля 2023 г. .
  3. ^ Ошибка: Невозможно правильно отобразить ссылку из Wikidata. Технические детали:
    • Причина сбоя {{ Cite web }} : при вызове выходного шаблона будет пропущен обязательный параметр url.
    • Причина сбоя {{ Cite Q }} : При вызове выходного шаблона будет пропущен обязательный параметр 1.
    Более подробную информацию смотрите в документации .
  4. ^ Cock, Peter JA; Antao, Tiago; Chang, Jeffery T; Chapman, Brad A; Cox, Cymon J; Dalke, Andrew; Friedberg, Iddo; Hamelryck, Thomas; Kauff, Frank; Wilczynski, Bartek; de Hoon, Michiel JL (20 марта 2009 г.). "Biopython: свободно доступные инструменты Python для вычислительной молекулярной биологии и биоинформатики". Bioinformatics . 25 (11): 1422– 3. doi :10.1093/bioinformatics/btp163. PMC 2682512 . PMID  19304878. 
  5. ^ ab На веб-сайте Biopython можно найти другие статьи, описывающие Biopython, а также список из более чем ста публикаций, использующих/цитирующих Biopython.
  6. ^ Мангалам, Гарри (сентябрь 2002 г.). «Инструментарии Bio* — краткий обзор». Briefings in Bioinformatics . 3 (3): 296–302 . doi : 10.1093/bib/3.3.296 . PMID  12230038.
  7. ^ ab Chapman, Brad (11 марта 2004 г.), The Biopython Project: Philosophy, functionally and facts (PDF) , получено 11 сентября 2014 г.
  8. Список участников Biopython, архивирован из оригинала 11 сентября 2014 г. , извлечен 11 сентября 2014 г.
  9. ^ Knight, R; Maxwell, P; Birmingham, A; Carnes, J; Caporaso, JG; Easton, BC; Eaton, M; Hamady, M; Lindsay, H; Liu, Z; Lozupone, C; McDonald, D; Robeson, M; Sammut, R; Smit, S; Wakefield, MJ; Widmann, J; Wikman, S; Wilson, S; Ying, H; Huttley, GA (2007). "Py Cogent: набор инструментов для извлечения смысла из последовательности". Genome Biology . 8 (8): R171. doi : 10.1186/gb-2007-8-8-r171 . PMC 2375001 . PMID  17708774. 
  10. Дейли, Крис, Biopython 1.77 выпущен , получено 6 октября 2021 г.
  11. Чанг, Джефф; Чепмен, Брэд; Фридберг, Иддо; Хамельрик, Томас; де Хун, Михиль; Кок, Питер; Антао, Тиаго; Талевич, Эрик; Вильчинский, Бартек (29 мая 2014 г.), Biopython Tutorial and Cookbook , получено 28 августа 2014 г.
  12. ^ Zmasek, Christian M; Zhang, Qing; Ye, Yuzhen; Godzik, Adam (24 октября 2007 г.). «Удивительная сложность сети предкового апоптоза». Genome Biology . 8 (10): R226. doi : 10.1186/gb-2007-8-10-r226 . PMC 2246300. PMID  17958905 . 
  13. ^ Талевич, Эрик; Инверго, Брэндон М; Кок, Питер JA; Чепмен, Брэд А (21 августа 2012 г.). "Bio.Phylo: унифицированный набор инструментов для обработки, анализа и визуализации филогенетических деревьев в Biopython". BMC Bioinformatics . 13 (209): 209. doi : 10.1186/1471-2105-13-209 . PMC 3468381. PMID  22909249 . 
  14. ^ "Klebsiella pneumoniae strain KPS77 plasmid pKPS77, complete sequence". NCBI . Получено 10 сентября 2014 г. .
  15. ^ Притчард, Лейтон; Уайт, Дженнифер А.; Бирч, Пол Р. Дж.; Тот, Ян К. (март 2006 г.). «GenomeDiagram: пакет Python для визуализации крупномасштабных геномных данных». Биоинформатика . 22 (5): 616– 617. doi : 10.1093/bioinformatics/btk021 . PMID  16377612.
  16. ^ Хамельрик, Томас; Мандерик, Бернард (10 мая 2003 г.). «Парсер PDB-файлов и класс структур, реализованные на Python». Биоинформатика . 19 (17): 2308– 2310. doi : 10.1093/bioinformatics/btg299 . PMID  14630660.
  17. ^ Руссе, Франсуа (январь 2008 г.). «GENEPOP'007: полная переработка программного обеспечения GENEPOP для Windows и Linux». Ресурсы молекулярной экологии . 8 (1): 103– 106. doi :10.1111/j.1471-8286.2007.01931.x. PMID  21585727. S2CID  25776992.
  18. ^ Экскофье, Лоран; Фолль, Матье (1 марта 2011 г.). "fastsimcoal: непрерывный во времени коалесцентный симулятор геномного разнообразия в условиях произвольно сложных эволюционных сценариев". Биоинформатика . 27 (9): 1332– 1334. doi : 10.1093/bioinformatics/btr124 . PMID  21398675.
  • Официальный сайт
  • Учебное пособие и кулинарная книга Biopython (PDF)
  • Исходный код Biopython на GitHub
Взято с "https://en.wikipedia.org/w/index.php?title=Biopython&oldid=1236354767"