**Biopython** նախագիծը հաշվարկային կենսաբանության և կենսաինֆորմատիկայի ոչ առևտրային նպատակով Python գործիքների բաց կոդով շարք է, որը ստեղծվել է մշակողների միջազգային ասոցիացիայի կողմից։ Այն պարունակում է կլասեր, որոնք ներկայացնում են կենսաբանական հաջորդականությունները և հաջորդականությունների ծանոթագրությունները, և ունակ է կարդալ և գրել տարբեր ֆայլի ձևաչափեր։ Այն նաև հնարավորություն է տալիս ծրագրային միջոցներով մուտք գործել կենսաբանական տեղեկատվության առցանց տվյալների շտեմարաններ, ինչպես օրինակ ՝ NCBI: Առանձին մոդուլները տարածում են Biopython- ի հնարավորությունները հաջորդականության դասավորության, սպիտակուցների կառուցվածքի, պոպուլյացիոն գենետիկայի, ֆիլոգենետիկայի, հաջորդականության մոտիվների և մեքենայական ուսուցման վրա։ Biopython- ը մի շարք Bio\* նախագծերից մեկն է, որը նախատեսված է հաշվարկային կենսաբանության մեջ ծածկագրերի կրկնօրինակումը նվազեցնելու համար։

Պատմություն
-----------

Biopython- ի զարգացումը սկսվել է 1999 թ. և այն առաջին անգամ թողարկվել է 2000 թ. հուլիսին։ Այն մշակվել է նույն ժամանակահատվածում և այլ նախագծերի միևնույն նպատակներով, որոնք կենսաինֆորմատիկային հնարավորություն են տվել ունենալ համապատասխան ծրագրավորման լեզուներ, ներառյալ BioPerl- ը, BioRuby- ն և BioJava- ն։ Նախագծի մշակողները ներառում էին Ջեֆ Չանգը, Էնդրյու Դալկեն և Բրեդ Չեփմանը, չնայած մինչ օրս ավելի քան 100 մարդ ներդրում է կատարել այս նախագծում։ 2007 թվականին ստեղծվեց նման Python նախագիծ, այն է ՝ PyCogent:

Biopython- ի սկզբնական տարբերակը ներառում էր կենսաբանական հաջորդականության ֆայլերի մուտք, ինդեքսավորում և մշակում։ Թեև սա դեռևս հիմնական ուշադրության կենտրոնում է, հաջորդ տարիների ընթացքում մոդուլների ավելացումն ընդլայնել է իր ֆունկցիոնալությունը `ընդգրկելով կենսաբանության լրացուցիչ ոլորտներ։

1.77 տարբերակի դրությամբ Biopython- ն այլևս չի աջակցում Python 2 -ին։

Դիզայն
------

Հնարավորության դեպքում Biopython- ը հետևում է Python ծրագրավորման լեզվի կողմից օգտագործվող պայմանականություններին `Python- ին ծանոթ օգտվողների համար ավելի դյուրին դարձնելու համար։ Օրինակ ՝ `Seq` և `SeqRecord` օբյեկտները կարող են շահարկվել slicing-ի միջոցով, ինչպես Python- ի strings և lists: Այն նաև նախագծված է գործառականորեն նման Bio\* այլ նախագծերին, օրինակ ՝ BioPerl- ին։

Biopython- ն ունակ է կարդալ և գրել ամենատարածված ֆայլի ձևաչափերն իր ֆունկցիոնալ ոլորտներից յուրաքանչյուրի համար, և դրա լիցենզիան թույլատրելի է և համատեղելի է ծրագրային ապահովման այլ լիցենզիաների հետ, ինչը թույլ է տալիս Biopython-ն օգտագործել տարբեր ծրագրային նախագծերում։

Հիմնական առանձնահատկություններ և օրինակներ
------------------------------------------

### Հաջորդականություն

Biopython- ի հիմնական հասկացությունը կենսաբանական հաջորդականությունն է, և դա ներկայացված է `Seq` կլասով։ Biopython Seq օբյեկտը շատ առումներով նման է Python- ի string-ին՝ այն աջակցում է Python slice նշումը, կարող է զուգակցվել այլ հաջորդականությունների հետ և անփոփոխ է։ Բացի այդ, այն ներառում է հաջորդականության համար հատուկ մեթոդներ և հստակեցնում է օգտագործվող հատուկ կենսաբանական այբուբենը։

```
>>> # This script creates a DNA sequence and performs some typical manipulations
>>> 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', IUPACProtein())

```

### Հաջորդականության ծանոթագրություն

`SeqRecord` կլասը նկարագրում է հաջորդականությունները ՝ տեղեկատվության հետ միասին, ինչպիսիք են անունը, նկարագրությունը և հատկանիշները ՝ `SeqFeature` օբյեկտների տեսքով։ Յուրաքանչյուր `SeqFeature` օբյեկտ սահմանում է հատկության տեսակը և դրա գտնվելու վայրը։ Առանձնահատկությունների տեսակները կարող են լինել «գեն», «CDS» (կոդավորման հաջորդականություն), «կրկնվող\_հատված», «բջջային\_էլեմենտ» կամ այլ, իսկ հաջորդականության մեջ հատկանիշների դիրքը կարող է լինել ճշգրիտ կամ մոտավոր։

```
>>> # This script loads an annotated sequence from file and views some of its contents.
>>> 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 տվյալների կառուցվածքներում, օրինակ ՝ ցուցակներում կամ բառարաններում, ապահովելով արագ մուտք հիշողության օգտագործումով։ Այլապես, ֆայլերը կարող են կարդացվել սկավառակից, ըստ անհրաժեշտության, ավելի դանդաղ կատարմամբ, բայց հիշողության ցածր պահանջներով։

```
>>> # This script loads a file containing multiple sequences and saves each one in a different format.
>>> 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 որոնման համակարգի տրամադրած գործառույթներից յուրաքանչյուրը հասանելի է այս մոդուլի գործառույթների միջոցով, ներառյալ գրառումների որոնումը և ներբեռնումը։

```
>>> # This script downloads genomes from the NCBI Nucleotide database and saves them in a FASTA file.
>>> 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 հոմոլոգների փոխհարաբերությունները:
Նկար 2: Նույն ծառը, որը պատկերվարված է վերևում, առանց արմատավորված գծված Graphviz- ի միջոցով ՝ Bio.Phylo- ի միջոցով
Bio.Phylo մոդուլը տրամադրում է գործիքներ ֆիլոգենետիկ ծառերի հետ աշխատելու և դրանք տեսանելի դարձնելու համար։ Կարդալու և գրելու համար ապահովվում են տարբեր ֆայլի ձևաչափեր, այդ թվում ՝ Newick, NEXUS և phyloXML: `Tree` և `Clade` օբյեկտների միջոցով կատարվում են ծառերի սովորական մանիպուլյացիաները և անցումները։ Օրինակները ներառում են ծառերի ֆայլերի փոխակերպում և համադրում, ծառից ենթախմբերի դուրսբերում, ծառի արմատը փոխելը և ճյուղի առանձնահատկությունների վերլուծություն, ինչպիսիք են երկարությունը կամ միավորը։

Արմատացած ծառերը կարող են գծվել ASCII- ով կամ matplotlib- ի միջոցով (տես նկար 1), իսկ Graphviz գրադարանը կարող է օգտագործվել առանց արմատավորված դասավորություններ ստեղծելու համար (տես նկար 2)։

### Գենոմային դիագրամներ

Figure 3: pKPS77 պլազմիդի վրա գեների դիագրամ, որը պատկերված է Biopython- ում GenomeDiagram մոդուլի միջոցով:
GenomeDiagram մոդուլն ապահովում է Biopython- ի շրջանակներում հաջորդականությունների տեսանելի մեթոդներ։ Հերթականությունները կարող են գծվել գծային կամ շրջանաձև տեսքով (տես նկար 3), ինչպես նաև բազմաթիվ ելքային ձևաչափեր են ապահովված, ներառյալ PDF և PNG: Դիագրամները ստեղծվում են ՝ հետքեր պատրաստելով, այնուհետև հաջորդական հատկանիշներ ավելացնելով այդ հետքերին։ Մեկը, շրջանակելով հաջորդականության առանձնահատկությունները և օգտագործելով դրանց հատկանիշները որոշելու համար, թե արդյոք դրանք ինչպես են ավելացվում գծապատկերի հետքերում, կարող է մեծ վերահսկողություն հաստատել վերջնական դիագրամի արտաքին տեսքի վրա։ Խաչաձև կապերը կարող են կազմվել տարբեր հետքերի միջև ՝ թույլ տալով մեկին համեմատել մի քանի հաջորդականություններ մեկ դիագրամում։

### Մակրոմոլեկուլյար կառուցվածք

Bio.PDB մոդուլը կարող է բեռնել մոլեկուլային կառուցվածքներ PDB և mmCIF ֆայլերից և ավելացվել է Biopython- ին 2003 թվականին։ Կառուցվածքի օբյեկտը կենտրոնականն է այս մոդուլի համար և հիերարխիկ կերպով կազմակերպում է մակրոմոլեկուլային կառուցվածքը. `Structure`, որոնք պարունակում են `Model`օբյեկտներ, որոնք էլ պարունակում են `Chain` օբյեկտներ, սրանք էլ պաուրնակում են `Residue` օբյեկրներ և վերջինն էլ իր հերթին պաուրնակում է `Atom` օբյեկտներ։ Ոչ ճիշտ հաջորդականությամբ մնացորդներն ու ատոմները ստանում են իրենց կլասերը ՝ `DisorderedResidue` և `DisorderedAtom`, որոնք նկարագրում են իրենց անորոշ դիրքերը։

Օգտագործելով Bio.PDB- ն ՝ մեկը կարող է ղեկավարել մակրոմոլեկուլային կառուցվածքի ֆայլի առանձին բաղադրիչներ, օրինակ ՝ սպիտակուցի յուրաքանչյուր ատոմի հետազոտումը։ Հնարավոր են ընդհանուր վերլուծություններ, օրինակ ՝ հեռավորությունների կամ անկյունների չափում, մնացորդների համեմատություն և մնացորդների խորության հաշվարկ։

### Պոպուլյացիոն գենետիկա

Bio.PopGen մոդուլն ավելացնում է Biopython- ի հնարավորւոթյունը Genepop- ի համար, որը ծրագրային փաթեթ է `պոպուլյացիոն գենետիկայի վիճակագրական վերլուծության համար։ Սա թույլ է տալիս վերլուծել Հարդի -Վայնբերգի հավասարակշռությունը, կապի անհավասարակշռությունը և պոպուլյացիոն ալելների ալելի շատ հաճախականությունների այլ առանձնահատկությունները։

Այս մոդուլը կարող է նաև իրականացնել պոպուլյացիայի գենետիկական սիմուլյացիա ՝ օգտագործելով fastsimcoal2 ծրագրի հետ համատեղվող տեսությունը։

Տես նաև
-------

* BioPerl
* BioRuby
* BioJS
* BioJava

Ծանոթագրություններ
------------------

1. ↑  Chapman Brad, Chang Jeff (August 2000)։ «Biopython: Python tools for computational biology»։ *ACM SIGBIO Newsletter* **20** (2): 15–19։ doi:10.1145/360262.360268  `|s2cid=` պարամետրը գոյություն չունի (օգնություն)
2. ↑  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 March 2009)։ «Biopython: freely available Python tools for computational molecular biology and bioinformatics»։ *Bioinformatics* **25** (11): 1422–3։ PMC 2682512։ PMID 19304878։ doi:10.1093/bioinformatics/btp163
3. 1 2  Refer to the Biopython website for other papers describing Biopython, and a list of over one hundred publications using/citing Biopython.
4. ↑  Mangalam Harry (September 2002)։ «The Bio\* toolkits—a brief overview»։ *Briefings in Bioinformatics* **3** (3): 296–302։ PMID 12230038։ doi:10.1093/bib/3.3.296  `|doi-access=` պարամետրը գոյություն չունի (օգնություն)
5. 1 2  Chapman, Brad (11 March 2004), *The Biopython Project: Philosophy, functionality and facts*, վերցված է 11 September 2014
6. ↑   *List of Biopython contributors*, արխիվացված  օրիգինալից 11 September 2014-ին, վերցված է 11 September 2014
7. ↑  Knight R, Maxwell P, Birmingham A, Carnes J, Caporaso J. G. Easton B. C. Eaton M, Hamady M, Lindsay H, Liu Z, Lozupone C, McDonald D, Robeson M, Sammut R, Smit S, Wakefield M. J. Widmann J, Wikman S, Wilson S, Ying H, Huttley G. A. (2007)։ «Py *Cogent*: A toolkit for making sense from sequence»։ *Genome Biology* **8** (8): R171։ PMC 2375001։ PMID 17708774։ doi:10.1186/gb-2007-8-8-r171
8. ↑  Daley, Chris, *Biopython 1.77 released*, վերցված է 6 October 2021
9. ↑  Chang, Jeff; Chapman, Brad; Friedberg, Iddo; Hamelryck, Thomas; de Hoon, Michiel; Cock, Peter; Antao, Tiago; Talevich, Eric *և այլք*։ (29 May 2014), *Biopython Tutorial and Cookbook*, վերցված է 28 August 2014
10. ↑  Zmasek Christian M, Zhang Qing, Ye Yuzhen, Godzik Adam (24 October 2007)։ «Surprising complexity of the ancestral apoptosis network»։ *Genome Biology* **8** (10): R226։ PMC 2246300։ PMID 17958905։ doi:10.1186/gb-2007-8-10-r226։ Արխիվացված է օրիգինալից 10 October 2014-ին։ Վերցված է 9 September 2014  `|url-status=` պարամետրը գոյություն չունի (օգնություն)
11. ↑  Talevich Eric, Invergo Brandon M, Cock Peter JA, Chapman Brad A (21 August 2012)։ «Bio.Phylo: A unified toolkit for processing, analyzing and visualizing phylogenetic trees in Biopython»։ *BMC Bioinformatics* **13** (209): 209։ PMC 3468381։ PMID 22909249։ doi:10.1186/1471-2105-13-209
12. ↑  «Klebsiella pneumoniae strain KPS77 plasmid pKPS77, complete sequence»։ NCBI։ Վերցված է 2014 թ․ սեպտեմբերի 10
13. ↑  Pritchard Leighton, White Jennifer A, Birch Paul RJ, Toth Ian K (March 2006)։ «GenomeDiagram: a python package for the visualization of large-scale genomic data»։ *Bioinformatics* **22** (5): 616–617։ PMID 16377612։ doi:10.1093/bioinformatics/btk021  `|doi-access=` պարամետրը գոյություն չունի (օգնություն)
14. ↑  Rousset François (January 2008)։ «GENEPOP'007: a complete re-implementation of the GENEPOP software for Windows and Linux»։ *Molecular Ecology Resources* **8** (1): 103–106։ PMID 21585727։ doi:10.1111/j.1471-8286.2007.01931.x  `|s2cid=` պարամետրը գոյություն չունի (օգնություն)
15. ↑  Excoffier Laurent, Foll Matthieu (1 March 2011)։ «fastsimcoal: a continuous-time coalescent simulator of genomic diversity under arbitrarily complex evolutionary scenarios»։ *Bioinformatics* **27** (9): 1332–1334։ PMID 21398675։ doi:10.1093/bioinformatics/btr124  `|doi-access=` պարամետրը գոյություն չունի (օգնություն)

Արտաքին հղումներ
----------------

* Պաշտոնական կայք
* Biopython Tutorial and Cookbook (PDF)
* Biopython source code on GitHub