• Rezultati Niso Bili Najdeni

Paket dpcrAnalysis [41] je paket napisan v jeziku R, ki je namenjen ana-lizi ddPCR podatkov. V okviru magistrske naloge ga je razvila Machteld Varewyc. Podatki ddPCR so pogosto analizirani s programsko opremo, ki jo ponuja ddPCR proizvajalec s pristopom ˇcrne ˇskatle ali pa se pragovne vrednosti doloˇci kar brez uporabe posebnih programov. Namen paketa dp-crAnalysis je uporabnikom ponuditi odprtokodni naˇcin analiziranja ddPCR podatkov z uporabo metod za analizo, ki so bile razvite v zadnjem dese-tletju. Med te metode spadajo Dreova metoda [7], Jonesova metoda [13], Trypsteenova metoda [40], Lievensova metoda [16] in Jacobsova metoda [12].

Pred razvojem paketa sta bila javno na voljo dva R paketa za analizo ddPCR podatkov, ki sta tudi kljuˇcna za delovanje paketa dpcrAnalysis:

• ddpcr je paket, ki ponuja vmesnik za iskanje, analiziranje in vizuali-zacijo ddPCR podatkov v R in je prvi tovrstni javno dostopni paket [32].

• dpcR je paket za analizo, vizualizacijo in simulacijo dPCR podatkov.

Podpira podatke v formatu komercialnih sistemov (Bio-Rad QX200, Fluidigm BioMark) in ostalih podobnih sistemov za procesiranje ddPCR podatkov. Pragovna meja se doloˇci z metodami iz paketa dpcrAnalysis, dpcrAnalysis pa nato uporabi funkcije dpcR za nadaljno ddPCR ana-lizo [33].

Paket dpcrAnalysis vkljuˇcuje opise funkcij v direktoriju “man” v datote-kah tipa Rd. To so datoteke, ki podrobno opisujejo vhod, izhod in namen

funkcije. Vkljuˇcuje tudi datoteke s testnimi primeri in veˇcje datoteke tipa CSV s testnimi podatki. Za uporabo paketa je najbolj v pomoˇc datoteka s testnimi primeri, saj se v njej vidi kako pravilno brati podatke, v kakˇsnem zaporedju se kliˇcejo funkcije in katere funkcije so javne ter katere zasebne narave (klicanje teh poteka le med funkcijami znotraj paketa).

2.5.1 Osnovne funkcije

V paketu je implementiranih 34 funkcij, v tem poglavju pa bom opisal zgolj tiste funkcije, ki sem jih uporabljal pri svoji implementaciji aplikacije.

• readDpcr(dataType, dataDir, testPattern, newPattern) prebere vse datoteke v po-danem direktoriju in vrne 2 seznama s testData in newData. Glavni namen funkcije je, da se rezultat posreduje v ostale funkcije paketa, npr. performAnalysis.

• performAnalysis(dpcrData, method = c(“jones“, “dreo“, “trypsteen“, “lievens“, “jacobs“), as-sayNames = NA, plotDir = tempdir(), printInfo = TRUE) izvede izbrano analizno me-todo na ddPCR podatkih za vsak podan nabor vzorcev (angl. assay).

Oblika rezultata je odvisna od izbrane metode. V aplikaciji se uporabi parametermethodz vrednostjolievens, dreo, jacobsalilievens. Rezultat teh metod vrne tabelo, ki jo vrne privatna metoda applyThreshold, v primeru lievens vrednosti parametra pa ˇse generira 2 slikovni datoteki z grafom s privatno metodo plotLievens.

• getConcentration(nPositive, nTotal, confMethod = c(“wilson“, “lievens“), confLevel = 0.95, vol.mix = 20, vol.temp = 2, volume = 0.91) izraˇcuna koncentracijo z intervalom zaupanja.

• getNegPosThreshold(groups, method = c(“quantaSoft“, “jones“, “dreo“, “user“))izraˇcuna negativno in pozitivno mejo glede na podane skupine in metodo.

• getPlotData(data) vrne podatkovni okvir (angl. data frame) za uporabo pri izrisu grafa iz seznama amplitud.

Diplomska naloga 11

• extractAmplitudes(pcrData, channel = 1, doGroup = FALSE) vrne amplitude iz po-datkov generiranih v platformi ©Bio-Rad .

• applyThreshold (amplitudesList, negThreshold, posThreshold, confMethod = c(“wilson“, “lie-vens“)) aplicira pragovne vrednosti na podatke in tako doloˇci pozitivne kapljice, negativne kapljice in deˇz. Funkcija vrne podatkovni okvir s povzetkom rezultatov ob apliciranju mejne vrednosti (angl. cut-off va-lue) nad novimi podatki (newData).

Vsaka vrstica v rezultatu izpiˇse ime vzorca (npr. A01), ˇstevilo pozitiv-nih kapljic v vzorcu, ˇstevilo negativpozitiv-nih, ˇstevilo veljavpozitiv-nih, predvideno koncentracijo po Poissonovi porazdelitvi, spodnjo mejo intervala zaupa-nja za koncentracijo, zgornjo mejo intervala zaupazaupa-nja za koncentracijo in ˇstevilo kapljic, ki se jih definira kot deˇz.

2.5.2 Pomoˇ zne funkcije za izris grafov

V aplikacijo sem vkljuˇcil tudi grafe, saj uporabnikom in bralcem poroˇcil, ki jih aplikacija generira, olajˇsajo razumevanje rezultatov vzorcev in tudi omogoˇcijo hitro detekcijo osamelcev (angl. outliers). Pri tem sem uporabil spodnje funkcije.

• plotAmplitudes(wideMargin = TRUE, ...) ustvari privzete nastavitve za grafe (angl. summary plot). Uporablja se znotraj funkcijplotDreo, plotJones inplotTrypsteen. Ne vraˇca vrednosti temveˇc zgolj izriˇse graf amplitud.

• plotConcentration(results, methods = NULL, trueConcentration = NA, plotDir = tempdir())

izriˇse graf s povzetki koncentracij vsake metode analize ddPCR, ki jo vrne funkcija performAnalysis. Na y osi je vrednost koncentracije, na x osi pa ime vzorca. Za vsak vzorec se na grafu izriˇse spodnja meja (lowerBound) in zgornja meja koncentracaije (upperBound) v obliki da-ljice (glej sliko 2.2).

• plotGeneral(testData, newData, plotDir = tempdir())izriˇse graf podatkov amplitud.

Slika 2.2: Rezultat vizualizacije rezultatov z metodoplotConcentration– graf predstavlja primerjavo koncentracij doloˇcenih s tremi razliˇcnimi metodami.

• plotLievens izriˇse graf gostote amplitud (glej sliko 2.3) in graf klasifika-cije (glej sliko 2.4) za izbrani nabor podatkov.

2.5.3 Krovne funkcije za izvedbo analize

Sledeˇce funkcije sprejmejo rezultat obdelave vhodnih podatkov s funkcijo readDpcrkot vhod in vrnejo podatkovni okvir s povzetkom amplitud po sku-pinah, ki jih vrne funkcija applyThreshold. Funkcija readDpcr namreˇc gene-rira podatkovni okvir z negativnimi podakti (negativeData), testnimi podatki (testData) in novimi podatki (newData).

• thresholdDreo(negativeData, newData)definira pragovno vrednost in jo aplicira na nabor podatkov po Dreovi metodi.

• thresholdJacobs(negativeData, newData, assayName, method = c(“argam“, “cgam“, “scam“), plotDir = tempdir(), printInfo = TRUE) definira pragovno vrednost in jo aplicira

Diplomska naloga 13

Slika 2.3: Vizualizacija rezultatov metodeplotLievens– graf gostote amplitud, kjer os y predstavlja gostoto, os x pa fluorescenco.

na nabor podatkov po Jacobsovi metodi.

• thresholdJones(testData, newData) definira pragovno vrednost in jo aplicira na nabor podatkov po Jonesovi metodi.

• thresholdLievens(newData, assayName, plotDir = tempdir(), silent = TRUE) definira pra-govno vrednost in jo aplicira na nabor podatkov po Lievensovi metodi.

• thresholdTrypsteen(outputDir = file.path(tempdir(), “output ddpcrquant“), negativeData, ne-wData, threshold.int = 0.9995, reps = 10, blocks = 150, threshold.manual = NA, doPlot = TRUE)

definira pragovno vrednost in jo aplicira na nabor podatkov po Tryp-steenovi metodi.

Slika 2.4: Vizualizacija rezultatov metode plotLievens – graf klasifikacije s pragovno vrednostjo, kjer os y predstavlja fluorescenco, os x pa zaporedno ˇstevilko kapljice.

2.5.4 Pomoˇ zne funkcije za Lievensovo metodo

Ker je glavna metoda analize v aplikaciji ravno Lievensova metoda, je po-membno, da poznamo, katere pomoˇzne funkcije uporablja funkcija threshol-dLievens.

• magicLievens(kurtosis)izraˇcuna toleranco glede na podano sploˇsˇcenost (angl.

kurtosis).

• findPeaksLievens(kurtosis) najde vrhove v funkciji gostote za podano pa-sovno ˇsirino. Najde tudi najniˇzje vrednosti funkcije.

Poglavje 3

Razvoj aplikacije

V sledeˇcem poglavju bodo predstavljene tehnologije in orodja uporabljena za razvoj aplikacije. Implementacijo aplikacije sem razdelil na ˇcelni (angl.

frontend) in zaledni (angl. backend) del. Celni del aplikacije se imenujeˇ

“pcr-app-frontend” in je dostopen v repozitoriju [28]. Zaledni del se imenuje

“pcr-app” in je dostopen v drugem repozitoriju [27].

3.1 Uporabljene tehnologije

Ob izbiri tehnologij smo imeli v mislih, da vzamemo tiste, ki so moderne, preproste in relevantne. Drˇzali smo se tega, da je uporabljena najnovejˇsa stabilna razliˇcica tehnologije, saj je poleg tega, da ponuja veˇc funkcionalnosti in varnosti v primerjavi s starejˇsimi razliˇcicami, za programerja bolj zanimiva za uporabo in uˇcenje.

3.1.1 Javascript in Typescript

Javascript je objektni skriptni programski jezik, razvit leta 1995, in je naj-bolj razˇsirjen programski jezik za uporabo v spletnih brskalnikih. Uporaba pa ni omejena samo na spletne aplikacije, saj se lahko JavaScript uporabi tudi za implementacijo zalednih sistemov. Je ˇsibko-definiran jezik, ker ob pi-sanju kode tipov ne definiramo eksplicitno, ampak se ti doloˇcijo ob izvajanju

15

skripte.

Typescript je novejˇsi programski jezik, ki razˇsirja JavaScript in ponuja modularni sistem, razrede, vmesnike (angl. interface) in postopno definiranje tipov [5]. Postopno definiranje tipov razvijalcem omogoˇca, da spremenljiv-kam oziroma objektom eksplicitno doloˇcijo statiˇcen ali pa dinamiˇcen tip, oboje z znanimi prednostmi in slabostmi [36]. Razvit je bil z namenom, da olajˇsa razvoj veˇcjih aplikacij JavaScript, saj dodatne prej omenjene tehnolo-gije poveˇcajo berljivost kode, bolj strikten pristop in boljˇso lovljenje napak ˇse pred konˇcno prevedbo kode.

3.1.2 Integrirano razvojno okolje WebStorm

WebStorm je integrirano razvojno okolje (angl. Integrated Development Envi-ronment, IDE) podjetja JetBrains, namenjeno razvoju v programskem jeziku JavaScript in poslediˇcno tudi v jeziku TypeScript. Dobro podporo ima tudi za stilske (angl. stylesheet) jezike in HTML (angl. HyperText Markup Lan-guage). Razvijanje aplikacije pospeˇsijo ˇstevilni dodatki (angl. plugins), ki so dostopni v trgovini znotraj IDE.