Biopython

Վիքիպեդիայից՝ ազատ հանրագիտարանից

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

Պատմություն[խմբագրել | խմբագրել կոդը]

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

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

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

Դիզայն[խմբագրել | խմբագրել կոդը]

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

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

Հիմնական առանձնահատկություններ և օրինակներ[խմբագրել | խմբագրել կոդը]

Հաջորդականություն[խմբագրել | խմբագրել կոդը]

Biopython- ի հիմնական հասկացությունը կենսաբանական հաջորդականությունն է, և դա ներկայացված է Seq կլասով[9]։ 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 հոմոլոգների փոխհարաբերությունները:[10]
Նկար 2: Նույն ծառը, որը պատկերվարված է վերևում, առանց արմատավորված գծված Graphviz- ի միջոցով ՝ Bio.Phylo- ի միջոցով

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

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

Գենոմային դիագրամներ[խմբագրել | խմբագրել կոդը]

Figure 3: pKPS77 պլազմիդի վրա գեների դիագրամ,[12] որը պատկերված է Biopython- ում GenomeDiagram մոդուլի միջոցով:

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

Մակրոմոլեկուլյար կառուցվածք[խմբագրել | խմբագրել կոդը]

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

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

Պոպուլյացիոն գենետիկա[խմբագրել | խմբագրել կոդը]

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

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

Տես նաև[խմբագրել | խմբագրել կոդը]

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

  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 
  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. 3,0 3,1 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 
  5. 5,0 5,1 Chapman, Brad (11 March 2004), The Biopython Project: Philosophy, functionality and facts, http://www.biopython.org/DIST/docs/presentations/biopython_exelixis.pdf, վերցված է 11 September 2014 
  6. List of Biopython contributors, արխիվացված օրիգինալից 11 September 2014-ին, https://archive.today/20140911121354/http://biopython.org/SRC/biopython/CONTRIB, վերցված է 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, https://www.open-bio.org/2020/05/25/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, http://biopython.org/DIST/docs/tutorial/Tutorial.html, վերցված է 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 
  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։ Վերցված է 10 September 2014 
  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 
  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 
  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 

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]