Biopython

**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 նշումը, կարող է զուգակցվել այլ հաջորդականությունների հետ և անփոփոխ է։ Բացի այդ, այն ներառում է հաջորդականության համար հատուկ մեթոդներ և հստակեցնում  է օգտագործվող հատուկ կենսաբանական այբուբենը։


```pycon
>>> # 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» (կոդավորման հաջորդականություն), «կրկնվող_հատված», «բջջային_էլեմենտ» կամ այլ, իսկ հաջորդականության մեջ հատկանիշների դիրքը կարող է լինել ճշգրիտ կամ մոտավոր։


```pycon
>>> # 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 տվյալների կառուցվածքներում, օրինակ ՝ ցուցակներում կամ բառարաններում, ապահովելով արագ մուտք հիշողության օգտագործումով։ Այլապես, ֆայլերը կարող են կարդացվել սկավառակից, ըստ անհրաժեշտության, ավելի դանդաղ կատարմամբ, բայց հիշողության ցածր պահանջներով։


```pycon
>>> # 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 որոնման համակարգի տրամադրած գործառույթներից յուրաքանչյուրը հասանելի է այս մոդուլի գործառույթների միջոցով, ներառյալ գրառումների որոնումը և ներբեռնումը։


```pycon
>>> # 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'))
```


### Ֆիլոգենիա

Bio.Phylo մոդուլը տրամադրում է գործիքներ ֆիլոգենետիկ ծառերի հետ աշխատելու և դրանք տեսանելի դարձնելու համար։ Կարդալու և գրելու համար ապահովվում են տարբեր ֆայլի ձևաչափեր, այդ թվում ՝ Newick, NEXUS և phyloXML: `Tree`  և `Clade`  օբյեկտների միջոցով կատարվում են ծառերի սովորական մանիպուլյացիաները և անցումները։ Օրինակները ներառում են ծառերի ֆայլերի փոխակերպում և համադրում, ծառից ենթախմբերի դուրսբերում, ծառի արմատը փոխելը և ճյուղի առանձնահատկությունների վերլուծություն, ինչպիսիք են երկարությունը կամ միավորը։

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

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

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

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

## Արտաքին հղումներ
* 
* Biopython Tutorial and Cookbook (PDF )
* Biopython source code on GitHub

Կատեգորիա:Կենսատեխնոլոգիա