ГЛАВА 3 ВЫКАРЫСТАННЕ ПРАГРАМНЫХ БІБЛІЯТЭК



 

Раней былі апісаныя многія гатовыя праграмныя сродкі, якія можна было выкарыстоўваць для выканання нейкіх задач біяінфарматыкі. Але для гэтага неабходна шукаць гатовае рашэнне сярод існуючых праграмных сродкаў і рабіць правільны выбар іх камбінацыі. Таму можа ўзнікнуць праблема таго, што гатовага рашэння можа і не быць у дадзены момант. Дапамагчы ў гэтай сітуацыі могуць гатовыя прыкладныя праграмныя інтэрфейсы (ППІ) для розных моў праграмавання. Яны дазволяць у сціслы і хуткі тэрмін напісаць даследчыку праграму на аснове гатовай бібліятэкі класаў і функцый вырашыць канкрэтную задачу без прыцягнення іншых распрацоўчыкаў. Асаблівую вядомасць зараз маюць праекты BioJava [2] і BioPerl.

Бібліятэка BioJava

 

Праект BioJava быў распачаты ў 1999 годзе Томасам Даўнам і Мэцью Покакам як ППІ для спрашчэння напісання праграм для біяінфарматыкі з выкарыстаннем мовы праграмавання Java. Цяпер гэта паўнавартасная аснова для стварэння праграм на Java і выканання многіх распаўсюджаных заданняў біяінфарматыкі. Гэтая бібліятэка адносіцца да праектаў з адкрытым праграмным кодам. Яна распаўсюджваецца па ліцэнзіі LGPL, таму можа быць выкарыстана і распаўсюджана ў любой форме[2]. Сярод магчымасцяў, якія прадастаўляе гэта бібліятэка вылучаюць 10 галоўных:

1. Нуклеатыдныя і амінакіслотныя алфавіты

2. Разборшчык BLAST

3. Увод/вывад паслядоўнасцяў

4. Дынамічнае праграміраванне

5. Увод/вывад структур і маніпуляцыі з імі

6. Маніпуляцыі з паслядоўнасцямі

7. Генетычныя алгарытмы

8. Статыстычыя размеркаванні

9. Графічныя інтэрфейсы карыстальніка

10.  Захаванне ў базе даных

Для працы з апошнімі версіямі бібліятэкі неабходны віртуальная машына Java 1.5 і шэраг бясплатных бібліятэк, на якія ёсць залежнасці ў BioJava. Разам з бібліятэкай ідзе падрабязная і змястоўная дакументацыя і прыклады, якія дапамогуць разабрацца ў кароткі тэрмін з асноўнымі магчымасцямі ППІ. Разгледзім некаторыя гэтыя магчымасці больш падрабязна.

Разнастайныя біялагічныя аб’екты апісваюцца рознымі спосабамі. Звычайна гэта робіцца на аснове запісу іх дробных элементарных аб’ектаў нейкімі сімваламі. Сімвалы могуць брацца з разнастайных алфавітаў, спецыфічных да канкрэтнай вобласці біяінфарматыкі. Гэтак, пры апісанні паслядоўнасцяў ДНК нам неабходны алфавіт усяго з чатырох сімвалаў тымін (Т), гуамін (Г), цытазін (Ц) і адэнін (А). Для апісання поліпептыдаў патрэбны ўжо алфавіт з 20 сімвалаў (бо ў поліпептыды ўваходзяць 20 розных амінакіслотных рэшткаў). Такім чынам, для абстракцыі працы з разнастайнымі паслядоўнасцямі сімвалаў і алфавітамі і была ўведзена іерархія тыпаў для розных структур. Гэтая функцыянальнасць размешчана ў пакетах org.biojava.bio.symbol і org.biojava.bio.seq.

Для спрашчэння працы са сховішчамі інфармацыі, распрацаваны інтэрфейсы і рэалізацыі разборшчыкаў файлаў разнастайных фарматаў і канвертацыю іх у структуры канкрэтных біялагічных аб’ектаў. Зараз падтрымліваюцца фарматы асноўных сховішчаў біялагічнай іфармацыі: PDB, GenBank, EMBL, FASTA, SWISSPROT. Характэрна тое, што заданнем некалькіх параметраў даследчык можа фільтраваць даныя і працаваць толькі з неабходнай яму інфармацыяй. Для больш складаных і нетрывіяльных задач распрацоўчык вольны пашырыць існуючы ППІ. Прычым, пры ўмове якаснага і карыснага пашырэння, гэтыя змены могуць быць дададзеныя ў праект на аснове адкрытасці яго праграмных кодаў і потым паўторна выкарыстаны іншымі даследчыкамі. Таму бібліятэка вельмі дынамічна пашыраецца.

Яшчэ адной магчымасцю бібліятэкі з’яўляецца наяўнасць рэалізацый эфектыўных алгарытмаў параўнання паслядоўнасцяў і структур на аснове метадаў дынамічнага праграміравання і схаваных маркаўскіх мадэляў. Гэтая функцыянальнасць размешчаная ў пакетах org.biojava.bio.dp і org.biojava.bio.alignment. Найбольш вядомымі з прадстаўленых алгарытмаў з’яўляюцца алгарытмы Баўма-Вэлша, Нідлмана-Вунша, Сміта-Ўотэрмана. Безумоўна, гэта вельмі карысная асаблівасць, бо скарачае значны час на распрацоўку і тэсціраванне праграмы.

Наступнай важнай магчымасцю бібліятэкі BioJava з’яўляецца магчымасць візуалізацыі структур і праца з шэрагам знешніх візуалізатараў. Гэтая функцыянальнасць знаходзіцца ў пакеце org.biojava.bio.gui і ўкладзеных у яго. Адным са знешніх візуалізатараў, працу з якім забяспечвае BioJava і адным з найвядомейшых, з’яўляецца Java аплет Jmol.

Нарэшце, адной з найважнейшых магчымасцяў бібліятэкі з’яўляецца праца з базамі даных. Спецыяльна распрацаванай базай для працы з біялагічным аб’ектамі на аснове існуючых рэляцыйных баз даных, з’яўляецца BioSQL. Яна з’яўляецца агульнай мадэллю для біялагічных аб’ектаў і для працы з ёю існуюць ППІ на розных папулярных мовах, сярод якіх прадстаўлены Python, Java, Ruby, Perl. Шэраг баз таксама прадстаўлены шырокім спектрам: PostgreSQL, MySQL, Oracle, HSQLDB.

Трэба заўважыць, што хоць BioJava і з’яўляецца найбольш дарослай і вялікай бібліятэкай, аднак пад уплывам дынамічнага развіцця новых моў усё больш дынамічна развіваюцца і іншыя бібліятэкі, такія як BioRuby, BioPerl, BioPython. Гэта дазваляе пашырыць выкарыстанне такі ППІ сярод вялікай колькасці даследчыкаў, бо знікае неабходнасць засвойваць нейкую канкрэтную мову, а ёсць магчымасць знайсці адпаведнік на тое мове, навыкі працы з якой найбольш развітыя.


Глава 4 ПРАКТЫЧНАЕ ВЫКАРЫСТАННЕ БІБЛІЯТЭКІ BIOJAVA

 

§1 Пастаноўка задачы

 

Уваходныя даныя: файлы, у якіх змяшчаюцца апісанні паслядоўнасцяў ДНК чалавечага геному

Выхадныя даныя: пара найбольш блізкіх паслядоўнасцяў з гэтых файлаў.

Неабходна знайсці пару найбольш блізкіх паслядоўнасцяў з дапамогай бібліятэкі BioJava.

 

§2 Усталёўка бібліятэкі

 

Перад тым, як пачынаць працу з бібліятэкай і напісаннем праграмнага коду, відавочна, трэба зрабіць яе прымяняльняй. Бібліятэка распаўсюджваецца, як набор jar файлаў, таму ў пачатку неабходна скачаць архіў з праграмай і распакаваць файлы бібліятэкі з яго. Для распрацоўкі на платформе Java неабходны так называемы Java Development Kit (JDK) – мінімальны набор распрацоўшчыка. Таму неабходна праінсталіраваць і яго, пры ўмове таго, што ён не ўсталяваны. Для працы з апошняй версіяй BioJava 1.6.1 патрэбны JDK ад версіі 1.5 і вышэй. Для таго, каб выкарыстоўваць бібліятэку неабходна дадаць яе файлы ў гэтак званы CLASSPATH. Можна выстаўляць яго, як пераменную асяроддзя, а можна і перадаваць як параметр пры запуску віртульнай машыны Java (Java Virtual Machine). Ускарыстаемся першым варыянтам:

 

export CLASSPATH=/home/kotuk/biojava-live.jar:/home/kotuk/bytecode.jar:

                                 /home/kotuk/commons-cli.jar:

                                 /home/kotuk/commons-collections-2.1.jar:

                                 /home/kotuk/commons-dbcp-1.1.jar:

                                 /home/kotuk/commons-pool-1.1.jar:.

 

Як можна заўважыць, акрамя непасрэдна класаў бібліятэкі, мы павінны ўключыць і архівы бібліятэк, ад якіх залежыць BioJava. У асноўным гэта часткі вядомага праекта з адкрытым праграмным кодам Apache Jakarta Commons. З-за таго, што BioJava таксама з'яўляецца праектам з актрытым праграмным кодам, то мы маем магчымасць ускарыстацца кодамі класаў і сабраць праект самім. Але для канкрэтнай задачы гэта не з'яўляецца неабходным, таму праграмныя коды ў асноўным выкарыстоўваюцца для глыбейшага разумення механізму працы бібліятэкі.

З цягам часу з ростам памеру і складанасці праектаў на Java, эфектыўная распрацоўка стала немагчымай без гэтак званых інтэграваных асяроддзяў распрацоўкі (Integrated Development Environment, IDE). Яны дазваляюць зручна працаваць з кодам, збіраць і запускаць праекты без пераключэння паміж вокнамі, праглядаць дакументацыю, працаваць з сістэмамі кантролю версій. Аднымі з найбольш вядомых IDE для Java з'яўляюцца Eclipse, IntelliJ Idea, NetBeans. У гэтай працы выкарыстоўваецца асяроддзе IntelliJ Idea [9]. Гэты прадукт з'яўляецца платным, але прадстаўляецца бясплатны тэставы тэрмін даўжынёй у месяц.

Праца ў ёй пачынаецца са стварэння праекта. Пры яго стварэнні прадастаўляецца выбар са спісу гатовых шаблонаў Java-праграм, але з-за спецыфічнасці задач біяінфарматыкі, мы выбіраем пусты праект і пакідаем усе наладкі па змоўчанні. Ствараем галоўны клас нашай праграмы BioJavaProgram. У выніку атрымоўваем экран працоўнай вобласці на малюнку 4.1.

 


 

 

Малюнак 4.1. Працоўнае асяроддзе IDE Idea

§3 Выбар алгарытмаў

 

Агульнапрынятым падыходам для вырашэння задач папарнага выраўнівання нейкіх зададзеных паслядоўнасцяў з’яўляецца выкарыстанне дакладных алгарытмаў Нідлмана-Вунша і Сміта-Ўотэрмана. Адрозненне гэтых алгарымтаў заключаецца ў вобласці выраўнівання паслядоўнасця: Нідлман і Ванш вырашылі задачу глабальнага выраўнівання ў той час, як Сміт і Ўотэрман вырашылі задачу лакальных выраўніванняў. Менавіта алгарытм апошніх і пакладзены ў аснову такога вядомага праграмнага сродка, як BLAST. Ніжэй будзе паказана, як з дапамогай бібліятэкі ППІ BioJava можна з лёгкасцю вырашыць гэтую задачу. Неабходна заўважыць, то такая магчымасць з’явілася толькі ў версіі 1.5 бібліятэкі.

Ідэя дакладных алгарытмаў заключаецца ў выкарыстанні матрычнага прадстаўлення графа рэдагавання, гэта значыць такога графа, які пакрывае аперацыі ўстаўкі, выдалення, замены і адкрыцця разрыву. З дапамогай дынамічнага праграміравання вылічваюцца элементы матрыцы, якія ацэньваюць ацэнкі адпаведных аперацыі. Шлях з найбольшай ацэнкай(ці найменшым штрафам) дае нам найлепшае выраўніванне, якое можа быць атрымана праходам назад па элементах матрыцы. Яшчэ адным параметрам алгарытмаў з'яўляецца матрыца замен, якая прадугледжвае розныя штрафы на замену аднаго сімвала другім у паслядоўнасці на аснове статыстычных біялагічных даных.

Для выкарыстання гатовых рэалізацый дастаткова толькі задаць штрафы на аперацыі (устаўкі, разрыву, замены), матрыцу штрафаў замены сімвалаў і паслядоўнасці, якія мы жадаем параўнаць.

§4 Напісанне праграмы пошуку найбліжэйшых паслядоўнасцяў

 

Код праграмы разбіваецца на некалькі частак. У пачатку мы будуем аб'ект інтэрфейса SequenceAlignment, які будзе адпавядаць выбранаму намі алгарытму Нідлмана-Ванша. Для гэтага мы ініцыялізуем матрыцу замен (ствараем аб'ект класа SubstitutionMatrix) на аснове файла матрыцы замен NUC-4.4 і выбранага алфавіту (у нашым выпадку гэта алфавіт ДНК). Гэтая і іншыя матрыцы даступны для скачвання ў Інтэрнэт па адрасе ftp://ftp.ncbi.nlm.nih.gov/blast/matrices. Акрамя гэтага задаем памеры штрафаў на супадзенне, замену, устаўку, выдаленен і працяг разрыву. Цяпер аб'ект aligner гатовы для выкарыстання. Цалкам код выглядае так:

SubstitutionMatrix matr = new SubstitutionMatrix(DNATools.getDNA(), new File(MATRIX_PATH));

SequenceAlignment aligner = new NeedlemanWunsch(0, 4, 2, 2, 2, matr);

Пасля гэтага дадаем функцыю getSequence, у якую параметрам перадаецца імя файла, з якога мы жадаем атрымаць паслядоўнасць. Нарэшце, дадаем функцыю getBestSeq, параметрам у якой выступае ініцыялізаваны намі раней выраўнівацель aligner. У ёй мы перабіраем усе магчымыя пары паслядоўнасцяй і выбіраем тую з іх, якая дае нам найлепшы вынік. Потым выводзім гэтае выраўніванне на экран.

Аналагічным чынам ініцыялізуем аб'ект-выраўнівацель і для алгарытму Сміта-Ўотэрмана. З-за таго, што абодва алгарытмы наследуюцца ад аднаго інтэрфейсу і маюць аднолькавую сігнатуру канструктараў змены неабходныя для стварэння новага аб'екту мінімальныя. Гэтаксама знаходзім пару з найлепшым выраўніваннем і вяртаем яе, а пасля ў галоўнай праграме выводзім гэтае выраўніванне на экран.

§5 Тэсціраванне праграмы пошуку найбліжэйшых паслядоўнасцяў

 

Для тэсціравання напісанай праграмы былі ўзяты файлы 16 паслядоўнасцяў ДНК чалавечага геному. Фарамат файлаў быў наступным: у першым радку змяшчалася назва канкрэтнага кавалка ў NCBI, у астатніх радках ішло непасрэднае апісанне паслядоўнасці ДНК у сімвалах алфавіту {A, C, G, T}, што адпавядае адэніну, цытазіну, гуаніну і тыяніну. Даўжыня паслядоўнасцяў была рознай і вагалася ад 220 да 720 сімвалаў. Усе гэтыя паслядоўнасці змяшчаліся ў каталог /home/skhamenk/dna, а ў праграме ўказваўся шлях да гэтага каталога ў глабальнай канстанце SEQUENCE_PATH. І ўжо адтуль праграма выбірала ўсе файлы і разбірала іх для далейшага выкарыстання.

У выніку выканання праграмы былі атрыманыя два найлепшых выраўніванні: адзін для алгартыму Нідлмана-Ванша, другі для алгарытму Сміта-Ўотэрмана. Як і можна было чакаць, выраўніванні не супалі і былі атрыманыя для розных паслядоўнасць. Гэта выклікана тым, што алгарытм Нідлмана-Ванша больш улічвае глабальнае падабенства паслядоўнасцяў, у той час як алгарытм Сміта-Ўотэрмана сканцэнтраваны на пошуку лакальных выраўніванняў.

У выніку працы першага алгарытму наступнае выраўніванне паслядоўнасцяў было выяўлена, як найлепшае: паслядоўнасці з кодамі BG560803 D104 і BG560804 D106 найбольш адпавядаюць адна адной пры глабальным параўнанні. Атрыманая ацэнка -68.0 з'яўляецца невысокай, але гэта выклікана тым, што паслядоўнасці для тэсціравання выбіраліся выпадковым чынам. Час выканання быў меншым за секунду.

У выніку працы другога алгарытму было атрымана, што паслядоўнасці з кодамі BG560814 D221 і BG560810 D215 найлепш адпавядаюць адна адной у лакальным плане. Іх даўжыні адпаведна складаюць 699 і 398 сімвалаў. Атрыманая ацэнка велічынёй у 764 сведчыць пра наяўнасць падобных кавалкаў у паслядоўнасцях.

Вывад выраўніванняў ажыццяўляўся з дапамогай рэалізавана ў BioJava метада getAlignmentString(). Ён змяшчае ўсю неабходную інфармацыю пра выраўніванне і праводзіць простую візуалізацю зробленых дзеянняў па рэдагаванні паслядоўнасцяў у аптымальным рашэнні. Вывад ажыццяўляецца ў тэкставым фармаце і прадстаўлены на малюнку 4.2. З-за выкарыстання тэхнікі дынамічнага праграміравання складанасць алгарытмаў складае O(m * n), дзе m i n – даўжыні паслядоўнасцяў для выраўнівання. Гэта дазваляе нам рашаць задачу за вельмі кароткі час на сучаснай тэхніцы.

 

 

Малюнак 4.2 Вывад выраўнівання найбольш падобных паслядоўнасцяў

 

 Такім чынам, былі знойдзены найбліжэйшыя адпаведнікі сярод уваходных паслядоўнасцяў і зроблена простая візуалізацыя іх падабенства. Гэта было зроблена пры выкарыстанні магчымасцяў мовы праграміравання Java і бібліятэкі для распрацоўкі праграм для біяінфарматыкі BioJava. Лістынг праграмы прыведзены ў Дадатку 1.


ЗАКЛЮЧЭННЕ

 

Такім чынам, у дадзенай працы была праведзена класіфікацыя праграмных сродкаў і паказаны асноўныя сферы прымянення інфармацыйных тэхналогій у біяінфарматыцы. Відавочна, што гэтая галіна зараз атрымоўвае ўсё большую і большую ўвагу. Не гледзячы на тое, што біяінфарматыка адносна маладая галіна інфарматыкі і малекулярнай біялогіі, але колькасць выданняў, навуковых лабараторый, гатовых праграмных сродкаў і праграмных бібліятэк сведчаць пра важнасць тых задач, якія стаяць перад ёю.

У першай главе дадзенай працы былі разгледжаны асноўныя прымяненні інфармацыйных тэхналогій у зборы, захоўванні і апрацоўцы інфармацыі. Былі апісаны асноўныя віды і тыпы сховішчаў біялагічнай інфармацыі ў залежнасці да самога тыпу інфармацыі. Была ілюстратыўна паказана і характарызавана праца з такімі праграмнымі сродкамі, як візуалізатары біялагічнай інфармацыі. Сцісла ахарактарызаваны такі клас праграм, як пашуковыя сістэмы, існаванне якога цесна звязанае з галоўным элементам біяінфарматыкі – сховішчамі біялагічнай інфармацыі.

У другой главе былі апісаны інфарматычныя падыходы да задач супастаўлення з узорам і прымянімасць іх да рашэння канкрэтных задач біяінфарматыкі. Былі апісаны галоўныя праграмныя сродкі, якія выкарыстоўваюцца зараз даследчыкамі для параўнання лінейных прасторавых структур бялкоў.

Трэцяя глава была прысвечана апісанню адной з найвядомейшых і карысных бібліятэк для стварэння праграм па рашэнні задач біяінфарматыкі BioJava. Былі падрабязна апісаны і патлумачаны асноўныя магчымасці гэтай бібліятэкі. А таксама падкрэслена роля той свабоды, якую даюць такія праграмныя сродкі распрацоўшчыку для рэалізацыі яго ідэй.

У чацвёртай апошняй главе з дапамогай апісанай раней бібліятэкі BioJava была выканана практычная задача вынаходжання найбольш падобных паслядоўнасцяў з нейкага мноства. У гэтай главе былі падрабязны апісаны крокі па ўсталёўцы, наладцы і выкарыстанні гэтай бібліятэкі.

Такім чынам, відавочная немагчымасць існавання біяінфарматыкі без наяўнасці інфармацыйных тэхналогій. І пры існуючых каласальных тэмпах развіцця інфарматыкі і камп'ютэрнай тэхнікі можна казаць пра такое ж хуткае развіццё і біяінфарматыкі, што прывядзе ў выніку да эфектыўнага вырашэння практычных задач біялогіі і медыцыны.


СПІС ВЫКАРЫСТАНАЙ ЛІТАРАТУРЫ

 

[1] Protein Data Bank [Электронны рэсурс] . - Рэжым доступу: http://www.rcsb.org . - Дата доступу: 14.01.2009

[2] Bergeron B. Bioinformatics computing. 1st ed. Upper Saddle River, NJ: Prentice Hall PTR, 2002, 395p.

 [3] Візуалізатар Aceleryss [Электронны рэсурс] . - Рэжым доступу: http://www.rcsb.org . - Дата доступу: 14.01.2009

[4] NCBI Map Viewer [Электронны рэсурс] . - Рэжым доступу: http://www.ncbi.nlm.nih.gov/projects/mapview/ . - Дата доступу: 14.01.2009

[5]NCBI Entrez [Электронны рэсурс] . - Рэжым доступу: http://www.ncbi.nlm.nih.gov/Entrez/ . - Дата доступу: 14.01.2009

[6]BLASTN [Электронны рэсурс] . - Рэжым доступу: http://www.ncbi.nlm.nih.gov/Entrez/ . - Дата доступу: 14.01.2009 [7]3DSS[Электронны рэсурс] . - Рэжым доступу: http://cluster.physics.iisc.ernet.in/3dss/ . - Дата доступу: 14.01.2009

[8]BioJava[Электронны рэсурс] . - Рэжым доступу: http://biojava.org/ . - Дата доступу: 14.01.2009

[9]IntelliJ Idea[Электронны рэсурс] . - Рэжым доступу: http://www.jetbrains.com/idea/ . - Дата доступу: 14.01.2009


ДАДАТАК 1

 

Лістынг праграмы BioJavaProgram

import org.biojava.bio.symbol.IllegalSymbolException;

import org.biojava.bio.seq.DNATools;

import org.biojava.bio.seq.Sequence;

import org.biojava.bio.alignment.SubstitutionMatrix;

import org.biojava.bio.alignment.SequenceAlignment;

import org.biojava.bio.alignment.NeedlemanWunsch;

import org.biojava.bio.alignment.SmithWaterman;

 

import java.io.*;

import java.util.List;

import java.util.ArrayList;

 

/**

 * @author Siarhei Khamenka

 */

public class BioJavaProgram {

 

public static final String MATRIX_PATH = "/home/kotuk/NUC44.MAT";

public static final String SEQUENCES_PATH = "/home/kotuk/fasta/";

 

static Sequence getSequence(String fileName) {

   try {

       BufferedReader br = new BufferedReader(new FileReader(SEQUENCES_PATH + fileName));

       String name = br.readLine(), st, seq = "";

       while ((st = br.readLine()) != null) {

           seq += st;

       }

       br.close();

       return DNATools.createDNASequence(seq, name);

   } catch (IOException e) {

       e.printStackTrace();

   } catch (IllegalSymbolException e) {

       e.printStackTrace();

   }

   return null;

}

 

static List<Sequence> getBestSeq(SequenceAlignment aligner) throws Exception {

   String[] seqFiles = new File(SEQUENCES_PATH).list();

   Sequence bestQuery = null, bestTarget = null;

   double maxRes = Double.MIN_VALUE;

   for (int i = 0; i < seqFiles.length; i++) {

       Sequence query = getSequence(seqFiles[i]);

       for (int j = i + 1; j < seqFiles.length; j++) {

           Sequence target = getSequence(seqFiles[j]);

           double res = aligner.pairwiseAlignment(query, target);

           if (res > maxRes) {

               bestQuery = query;

               bestTarget = target;

           }

       }

   }

   List<Sequence> res = new ArrayList();

   res.add(bestQuery);

   res.add(bestTarget);

   return res;

}

 

public static void main(String[] args) throws Exception {

   SubstitutionMatrix matr = new SubstitutionMatrix(DNATools.getDNA(), new File(MATRIX_PATH));

   SequenceAlignment aligner = new NeedlemanWunsch(0, 4, 2, 2, 2, matr);

   List<Sequence> bestNW = getBestSeq(aligner);

   aligner.pairwiseAlignment(bestNW.get(0), bestNW.get(1));

   System.out.println("Alignment Needleman-Wunsch : " + aligner.getAlignmentString());

   aligner = new SmithWaterman(0, 4, 2, 2, 2, matr);

   List<Sequence> bestSW = getBestSeq(aligner);

   aligner.pairwiseAlignment(bestSW.get(0), bestSW.get(1));

   System.out.println("Alignment Smith-Woterman : " + aligner.getAlignmentString());

}

}


Дата добавления: 2020-12-12; просмотров: 51; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!