Зцягамчасузростампамеруіскладанасціпраектаўна Java, эфектыўнаяраспрацоўкасталанемагчымайбезгэтакзваныхінтэграваныхасяроддзяўраспрацоўкі (Integrated Development Environment, IDE). Яныдазваляюцьзручнапрацавацьзкодам, збірацьізапускацьпраектыбезпераключэнняпаміжвокнамі, праглядацьдакументацыю, працавацьзсістэмамікантролюверсій. Аднымізнайбольшвядомых IDE для Java з'яўляюцца Eclipse, IntelliJ Idea, NetBeans. УгэтайпрацывыкарыстоўваеццаасяроддзеIntelliJ Idea [9]. Гэтыпрадуктз'яўляеццаплатным, алепрадстаўляеццабясплатнытэставытэрміндаўжынёйумесяц.
Праца ў ёй пачынаецца са стварэння праекта. Пры яго стварэнні прадастаўляецца выбар са спісу гатовых шаблонаў Java-праграм, але з-за спецыфічнасці задач біяінфарматыкі, мы выбіраем пусты праект і пакідаем усе наладкі па змоўчанні. Ствараем галоўны клас нашай праграмы BioJavaProgram. У выніку атрымоўваем экран працоўнай вобласці на малюнку 4.1.
Малюнак 4.1. Працоўнаеасяроддзе IDE Idea
Агульнапрынятым падыходам для вырашэння задач папарнага выраўнівання нейкіх зададзеных паслядоўнасцяў з’яўляецца выкарыстанне дакладных алгарытмаў Нідлмана-Вунша і Сміта-Ўотэрмана. Адрозненне гэтых алгарымтаў заключаецца ў вобласці выраўнівання паслядоўнасця: Нідлман і Ванш вырашылі задачу глабальнага выраўнівання ў той час, як Сміт і Ўотэрман вырашылі задачу лакальных выраўніванняў. Менавіта алгарытм апошніх і пакладзены ў аснову такога вядомага праграмнага сродка, як BLAST. Ніжэй будзе паказана, як з дапамогай бібліятэкі ППІ BioJava можна з лёгкасцю вырашыць гэтую задачу. Неабходна заўважыць, то такая магчымасць з’явілася толькі ў версіі 1.5 бібліятэкі.
Ідэя дакладных алгарытмаў заключаецца ў выкарыстанні матрычнага прадстаўлення графа рэдагавання, гэта значыць такога графа, які пакрывае аперацыі ўстаўкі, выдалення, замены і адкрыцця разрыву. З дапамогай дынамічнага праграміравання вылічваюцца элементы матрыцы, якія ацэньваюць ацэнкі адпаведных аперацыі. Шлях з найбольшай ацэнкай(ці найменшым штрафам) дае нам найлепшае выраўніванне, якое можа быць атрымана праходам назад па элементах матрыцы. Яшчэ адным параметрам алгарытмаў з'яўляецца матрыца замен, якая прадугледжвае розныя штрафы на замену аднаго сімвала другім у паслядоўнасці на аснове статыстычных біялагічных даных.
Для выкарыстання гатовых рэалізацый дастаткова толькі задаць штрафы на аперацыі (устаўкі, разрыву, замены), матрыцу штрафаў замены сімвалаў і паслядоўнасці, якія мы жадаем параўнаць.
Код праграмы разбіваецца на некалькі частак. У пачатку мы будуем аб'ект інтэрфейса 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. У ёй мы перабіраем усе магчымыя пары паслядоўнасцяй і выбіраем тую з іх, якая дае нам найлепшы вынік. Потым выводзім гэтае выраўніванне на экран.
Аналагічным чынам ініцыялізуем аб'ект-выраўнівацель і для алгарытму Сміта-Ўотэрмана. З-за таго, што абодва алгарытмы наследуюцца ад аднаго інтэрфейсу і маюць аднолькавую сігнатуру канструктараў змены неабходныя для стварэння новага аб'екту мінімальныя. Гэтаксама знаходзім пару з найлепшым выраўніваннем і вяртаем яе, а пасля ў галоўнай праграме выводзім гэтае выраўніванне на экран.
Для тэсціравання напісанай праграмы былі ўзяты файлы 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] ProteinDataBank [Электронны рэсурс] . - Рэжым доступу: http://www.rcsb.org . - Дата доступу: 14.01.2009
[2] BergeronB. Bioinformaticscomputing. 1st ed. Upper Saddle River, NJ: Prentice Hall PTR, 2002, 395p.
[3] Візуалізатар Aceleryss [Электронны рэсурс] . - Рэжым доступу: http://www.rcsb.org . - Дата доступу: 14.01.2009
[4] NCBIMapViewer [Электронны рэсурс] . - Рэжым доступу: http://www.ncbi.nlm.nih.gov/projects/mapview/ . - Дата доступу: 14.01.2009