![]() | |
Оригинальный автор(ы) | Чепмен Б., Чанг Дж. [1] |
---|---|
Первоначальный выпуск | 17 декабря 2002 г. ( 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 " ) )
Модуль Bio.Phylo предоставляет инструменты для работы с филогенетическими деревьями и их визуализации . Поддерживаются различные форматы файлов для чтения и записи, включая Newick , NEXUS и phyloXML . Обычные манипуляции с деревьями и обходы поддерживаются через объекты Tree
и Clade
. Примеры включают преобразование и сопоставление файлов деревьев, извлечение подмножеств из дерева, изменение корня дерева и анализ особенностей ветвей, таких как длина или оценка. [13]
Укорененные деревья можно рисовать в ASCII или с помощью matplotlib (см. рисунок 1), а библиотеку Graphviz можно использовать для создания неукорененных макетов (см. рисунок 2).
Модуль 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 . Пользователи могут создавать подклассы универсального класса оболочки, чтобы добавить поддержку для любого другого инструмента командной строки.
url
.1
.