• Rezultati Niso Bili Najdeni

RazvojspletneaplikacijezaanalizoPCRpodatkov AleksanderMerhar

N/A
N/A
Protected

Academic year: 2022

Share "RazvojspletneaplikacijezaanalizoPCRpodatkov AleksanderMerhar"

Copied!
68
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za raˇ cunalniˇ stvo in informatiko

Aleksander Merhar

Razvoj spletne aplikacije za analizo PCR podatkov

DIPLOMSKO DELO

UNIVERZITETNI ˇSTUDIJSKI PROGRAM PRVE STOPNJE

RA ˇCUNALNIˇSTVO IN INFORMATIKA

Mentor : izr. prof. dr. Miha Moˇskon Somentor : dr. Urˇsula Prosenc Zmrzljak

Ljubljana, 2021

(2)

besedilo, slike, grafi in druge sestavine dela kot tudi rezultati diplomskega dela lahko prosto distribuirajo, reproducirajo, uporabljajo, priobˇcujejo javnosti in pre- delujejo, pod pogojem, da se jasno in vidno navede avtorja in naslov tega dela in da se v primeru spremembe, preoblikovanja ali uporabe tega dela v svojem delu, lahko distribuira predelava le pod licenco, ki je enaka tej. Podrobnosti licence so dostopne na spletni strani creativecommons.si ali na Inˇstitutu za intelektualno lastnino, Streliˇska 1, 1000 Ljubljana.

Izvorna koda diplomskega dela, njeni rezultati in v ta namen razvita program- ska oprema je ponujena pod licenco GNU General Public License, razliˇcica 3 (ali novejˇsa). To pomeni, da se lahko prosto distribuira in/ali predeluje pod njenimi pogoji. Podrobnosti licence so dostopne na spletni strani http://www.gnu.org/

licenses/.

Besedilo je oblikovano z urejevalnikom besedil LATEX.

(3)

Kandidat: Aleksander Merhar

Naslov: Razvoj spletne aplikacije za analizo PCR podatkov

Vrsta naloge: Diplomska naloga na univerzitetnem programu prve stopnje Raˇcunalniˇstvo in informatika Ljubljana

Mentor: izr. prof. dr. Miha Moˇskon Somentor: dr. Urˇsula Prosenc Zmrzljak Opis:

Kandidat naj v svojem delu pregleda metode za kvantifikacijo in analizo podatkov ddPCR (angl. droplet-digital Polymerase Chain Reaction) in iz- bere metodo, ki je v modernih analizah najbolj primerna. Implementira naj spletno aplikacijo, ki z izbrano metodo omogoˇca izvajanje analiz podatkov ddPCR preko uporabniku prijaznega grafiˇcnega vmesnika. Pri tem naj si pomaga z obstojeˇcimi programskimi knjiˇznicami in paketi.

(4)
(5)

Zahvaljujem se mentorju, izr. prof. dr. Mihu Moˇskonu, za izjemno odzivnost, potrpeˇzljivost in pomoˇc pri izdelavi diplomskega dela.

Zahvaljujem se somentorici, dr. Urˇsuli Prosenc Zmrzljak, za strokovno pomoˇc in podjetju Labena za moˇznost sodelovanja na zanimivem podroˇcju.

Zahvaljujem se Pii Marinˇcek za pomoˇc pri razumevanju bioloˇskih kon- ceptov.

Zahvaljujem se druˇzini, sorodnikom, prijateljem in kolegom za vso pomoˇc in podporo skozi vsa leta ˇstudija.

(6)
(7)

Kazalo

Povzetek Abstract

1 Uvod 1

2 Analiza podatkov z metodo PCR 3

2.1 DNK: kaj je in kaj lahko z njo poˇcnemo? . . . 3

2.2 PCR . . . 4

2.3 Analiza ddPCR podatkov . . . 6

2.4 Lievensova metoda . . . 7

2.5 Paket dpcrAnalysis . . . 9

3 Razvoj aplikacije 15 3.1 Uporabljene tehnologije . . . 15

3.2 Zaledni sistem . . . 16

3.3 Celni sistem . . . .ˇ 22 4 Funkcionalnosti aplikacije 27 4.1 Administracija uporabnikov . . . 27

4.2 Branje podatkov . . . 28

4.3 Analiza podatkov . . . 28

4.4 Izvoz podatkov in poroˇcila . . . 30

(8)

5.2 Analiza podatkov ddPCR . . . 35

6 Zakljuˇcek 43

Literatura 43

Clanki v revijahˇ 45

Clanki v zbornikihˇ 47

Poglavja v knjigah 49

Celotna literatura 51

(9)

Seznam uporabljenih kratic

kratica angleˇsko slovensko

CSV Comma-Separated Values vrednosti, loˇcene z vejico PCR Polymerase Chain Reaction veriˇzna reakcija s polimerazo qPCR quantitative Polymerase

Chain Reaction

kvantitativna veriˇzna reakcija s polimerazo

dPCR digital Polymerase Chain Re- action

digitalna veriˇzna reakcija s polimerazo

ddPCR droplet digital Polymerase Chain Reaction

kapljiˇcna digitalna veriˇzna re- akcija s polimerazo

DNA DeoxyriboNucleic Acid deoksiribonukleinska kislina RNA RiboNucleic Acid ribonukleinska kislina

KDE Kernel Density Estimation izraˇcun za oceno gostote jedra HTML HyperText Markup Language jezik za oznaˇcevanje nadbese-

dila API Application Programming In-

terface

aplikacijski programski vme- snik

JSON JavaScript Object Notation javascript objektni zapis REST REpresentational State

Transfer

reprezentativni prenos stanja DOM Document Object Model objektni model dokumenta IDE Integrated Development En-

vironment

integrirano razvojno okolje JWT JSON Web Token spletni ˇzeton JSON

(10)

dilnih strani

SQL Structured Query Language strukturiran povpraˇsevalni je- zik za delo s podatkovnimi ba- zami

NoSQL Non-relational SQL ne-relacijski SQL

UUID Universally Unique IDentifier univerzalni enoliˇcni identifika- tor

NPM Node Package Manager upravitelj paketov za node URL Uniform Resource Locator enotni naslov vira

UX User eXperience uporabniˇska izkuˇsnja CSS Cascading Style Sheets kaskadne stilske podloge SASS Syntactically Awesome Style

Sheets

sintaktiˇcno odliˇcne stilske podloge

SCSS Sassy Cascading Style Sheets modne kaskadne stilske pod- loge

CLI Command-Line Interface vmesnik z ukazno vrstico

FK Foreign Key tuji kljuˇc

XLSX Excel XML spreadsheet Excel XML preglednica XML eXtensible Markup Language razˇsirljivi oznaˇcevalni jezik UTC Universal Time Coordinated univerzalni koordinirani ˇcas

(11)

Povzetek

Naslov: Razvoj spletne aplikacije za analizo PCR podatkov Avtor: Aleksander Merhar

Moderne metode za analizo bioloˇskih podatkov so pogosto na voljo izkljuˇcno v obliki programskih knjiˇznic. To pomeni, da je njihova uporaba omejena na strokovnjake z znanjem programiranja. Tovrstne metode strokovnjaki in znanstveniki s podroˇcja ved o ˇzivljenju brez znanja programiranja torej teˇzko uporabljajo pri svojem vsakdanjem delu.

V tem delu sem se lotil izdelave spletne aplikacije za analizo PCR (angl.

Polymerase Chain Reaction), konkretneje ddPCR (angl. digital-droplet Po- lymerase Chain Reaction) podatkov. Spletna aplikacija v zaledju uporablja knjiˇznico z implementacijo razliˇcnih sodobnih metod za analizo teh podatkov.

Preko uporabniku prijaznega grafiˇcnega vmesnika omogoˇca izvedbo izbranih analiz, prikaz rezultatov v tabelariˇcni in grafiˇcni obliki ter njihov izvoz v poenotenem formatu.

V delu predstavimo osnove razliˇcnih tipov analiz PCR in pripadajoˇcih podatkov ter opiˇsemo knjiˇznice, ki sem jih pri razvoju reˇsitve uporabil. Pred- stavimo funkcionalnosti in primere uporabe razvite aplikacije.

Kljuˇcne besede: PCR, dPCR, ddPCR, analiza podatkov, spletna aplika- cija.

(12)
(13)

Abstract

Title: Development of web application for PCR data analysis Author: Aleksander Merhar

Modern methods aimed to biological data analysis are commonly available exclusively in the form of programming libraries. This means that their use is limited to experts with programming knowledge. Therefore, such methods are difficult to be used by life-science experts and scientists in their everyday work.

In this thesis we present the development of a web application for the analysis of PCR (Polymerase Chain Reaction) data – ddPCR (digital-droplet Polymerase Chain Reaction) data, to be exact. The web application backend uses a library with different modern analysis methods of said data. With the use of a user-friendly graphical interface, it enables the user to perform selected analyses, display of results in a tabular and graphical formats, and export in a common report formats.

We present the fundamentals of different types of PCR analyses their corresponding data and we describe the libraries, used in the proposed im- plementation. We present the functionalities of our application and illustrate its practical use on simple yet illustrative examples.

Keywords: PCR, dPCR, ddPCR, data analysis, web application.

(14)
(15)

Poglavje 1 Uvod

Molekularna biologija in biokemija sta postali izredno hitro rastoˇci vedi. Kar naprej smo priˇca porajanju novih tehnologij in metod, ki znanstvenikom od- pirajo nova znanja o ˇzivih bitjih in naˇsem delovanju na molekularnem nivoju.

Ena izmed takˇsnih tehnologij je tudi tehnologija PCR, ki je z nadgradnjami v qPCR, dPCR in ddPCR postala pomembna diagnostiˇcna metoda.

Mnogo rezultatov naprednih laboratorijskih postopkov zahteva pregled in obdelavo s programsko opremo na raˇcunalnikih. Takˇsni programi velikokrat zahtevajo specifiˇcno znanje programiranja, s katerim mnogi znanstveniki bi- oloˇskih znanosti ne razpolagajo. Tisti programi, ki so uporabniku prijazni, pa so mnogokrat dragi in zaprtokodni, kar uporabniku onemogoˇca, da bi jih prilagajal svojim specifiˇcnim primerom.

V svojem diplomskem delu sem za potrebe podjetja Labena d.o.o. raz- vil aplikacijo za analizo podatkov ddPCR, ki uporablja odprto kodo pro- gramskega jezika R. ˇZelja zaposlenih v podjetju je bila efektivno in nezaple- teno analiziranje podatkov ddPCR v eni sami, uporabniku prijazni aplikaciji.

Zeleli so tudi, da vsebuje sistem z uporabniˇskimi raˇˇ cuni in moˇznostjo poroˇcil vsake analize, saj je dokumentacija vsakega eksperimenta izrednega pomena v znanosti. V sodelovanju s somentorico dr. Urˇsulo Prosenc Zmrzljak smo definirali osnovne specifikacije aplikacije in ostale, nekoliko zahtevnejˇse spe- cifikacije, s katerimi lahko kasneje aplikacijo ˇse nadgradimo.

1

(16)

V diplomskem delu opiˇsemo razvoj spletne aplikacije in predstavimo pro- blemsko domeno. V poglavju 2 opiˇsemo osnovne metode PCR in njene razliˇcice. Opiˇsemo tudi funkcije uporabljenega paketa, ki implementira ome- njene PCR metode. V poglavju 3 predstavimo tehnologijo in orodja upo- rabljena za razvoj zalednega in ˇcelnega dela spletne aplikacije. V poglavju 4 opiˇsemo funkcionalnosti aplikacije. Cilj je sestaviti varno aplikacijo, ki sledi specifikacijam podjetja. Te med drugim narekujejo razvoj sistema, ki omogoˇca upravljanje z uporabniˇskimi raˇcuni in analizo ddPCR podatkov. V poglavju 5 predstavimo primer uporabe aplikacije preko zaslonskih mask. Na koncu sledi ˇse zakljuˇcek z nekaj smernicami za nadaljnje delo.

(17)

Poglavje 2

Analiza podatkov z metodo PCR

2.1 DNK: kaj je in kaj lahko z njo poˇ cnemo?

Deoksiribonukleinska kislina, ali krajˇse DNK (angl. Deoxyribonucleic Acid, DNA), je molekula, ki vsebuje vse informacije potrebne za gradnjo celic, tkiv in celotnega organizma. Iz starˇsev se prenaˇsa na potomce in tako zagota- vlja kontinuiteto prenosa med generacijami. Molekulo gradijo ˇstirje osnovni nukleotidi: citozin (C), gvanin (G), adenin (A) in timin (T), zaporedje kate- rih doloˇca zaporedje aminokislin v proteinih, saj se v procesu transkripcije in translacije DNK zaporedje prevaja v proteine, ki so ene izmed osnov- nih celiˇcnih makromolekul. V celicah je obiˇcajno prisotna v obliki dvojne vijaˇcnice, saj se pari nukleotidov (A-T ter C-G) komplementarno poveˇzejo med sabo v bolj obstojno strukturo [17].

Poznavanje DNK zaporedja nam torej lahko razkrije mnogo informacij:

med drugimi lahko ugotovimo zaporedje aminokislin in strukturo posame- znih proteinov, diagnosticiramo lahko dedne bolezni in ostale genetske spre- membe oziroma mutacije posameznika. ˇCe primerjamo DNK veˇcih organiz- mov med sabo, lahko na podlagi podobnosti ugotovimo sorodnosti med njimi, lahko pa z analizo DNK iz okolja celo identificiramo posamezen organizem

3

(18)

ali pa odkrijemo storilca kriminalnega dejanja. Po odkritju DNK molekule in njene strukture se je zato v zadnjih nekaj desetletjih razvilo mnogo metod, ki omogoˇcajo njeno prouˇcevanje in modifikacijo. Ena izmed pomembnejˇsih in bolj uporabljenih je metoda ”veriˇzna reakcija s polimerazo“ (angl. Po- lymerase Chain Reaction, PCR).

2.2 PCR

V osemdesetih letih dvajsetega stoletja je ameriˇski biokemik Kary B. Mullis razvil metodo PCR, s katero je laboratorijsko mogoˇce eksponentno pomnoˇziti zaporedje nukleotidov [19] . Za uspeˇsen postopek PCR je kljuˇcno, da dovolj dobro poznamo zaporedje koncev izbrane nukleotidne sekvence. Tako lahko oblikujemo t. i. oligonukleotidne zaˇcetnike (angl. primers), to so komple- mentarni, enoveriˇzni DNK fragmenti, ki se veˇzejo na prisotno ujemajoˇce za- poredje, kar pomeni, da je za uspeˇsno reakcijo pomembno tudi, da je ˇzeljeno zaporedje prisotno vsaj v majhnih koliˇcinah. V reakciji je uporabljen en- cim DNK polimeraza, ki nato od oligonukleotidnega zaˇcetnika dalje zgradi ujemajoˇco verigo DNK, prisotni pa morajo biti tudi posamezni gradniki: nu- kleotidi. Ker so reakcije v postopku temperaturno specifiˇcne, se reakcije PCR vrˇsijo v t. i. termiˇcnih ciklerjih, kjer nastavimo ˇzeljene cikle segrevanja in ohlajanja.

Razvoj metode PCR je Mullisu prinesel Nobelovo nagrado, saj je pomenil pomembno prelomnico v molekularni biologiji in biokemiji, kasnejˇse nadgra- dnje metode pa so omogoˇcile tudi drugaˇcno uporabo kot zgolj pomnoˇzevanje ˇzeljenih sekvenc. Metoda PCR in njene modifikacije so tako postale ena izmed vodilnih tehnik v mnogih laboratorijskih postopkih, med drugim je kljuˇcna pri sekvenciranju DNK nove generacije, kloniranje izbranih genov, v forenziki, testih starˇsevstva ter tudi v medicinski diagnostiki [1].

(19)

Diplomska naloga 5

2.2.1 qPCR

Ker je pomnoˇzevanje fragmentov z metodo PCR eksponentno in je za uspeˇsno reakcijo nujna zaˇcetna prisotnost pomnoˇzene sekvence, so v devetdesetih le- tih Higuchi in sodelavci ugotovili, da lahko s kamero spremljajo zviˇsanje koncentracije DNK v posamezni reakciji PCR z zaznavanjem fluorescence in na podlagi tega doloˇcijo zaˇcetno koncentracijo izbrane sekvence v vzorcu [9].

Od klasiˇcne metode PCR se metoda qPCR razlikuje po tem, da se v reakcijo doda fluorescentno barvilo, ki se veˇze na dvoveriˇzno DNK – produkt reak- cij PCR. Klasiˇcni termalni cikler pa je opremljen s kamero, ki lahko zazna intenziteto fluorescence posameznih vzorcev. V vzorcih z viˇsjo zaˇcetno kon- centracijo ˇzeljenega fragmenta bo rast koncentracije DNK in z njo povezana intenzivnost fluorescence zaznana bolj zgodaj, torej v niˇzjem ciklu, v vzorcih z niˇzjo koncentracijo pa v kasnejˇsih ciklih. Opazovanje sprememb v fluore- scenci in poslediˇcno kvantifikacija poteka v realnem ˇcasu (angl. real-time), zato je metoda v angleˇsˇcini dobila imequantitative real-time PCR, ali krajˇse qPCR. Predvsem od zaˇcetka leta 2020 je qPCR metoda izjemno aktualna in bolj poznana tudi v sploˇsni javnosti, saj se modifikacija te metode (RT- qPCR) za zaznavanje molekul RNA (angl. ribonucleic acid) uporablja pri diagnosticiranju virusa SARS-CoV-19 [43].

2.2.2 ddPCR

Naslednja generacija metode PCR je bila nadgradnja v digitalno PCR me- todo (dPCR), ki sta jo izpopolnila in poimenovala Vogelstein in Kinzler pred dobrima dvema desetletjema [42], sam koncept pa je bil zasnovan ˇze nekaj let prej [38]. Pri tem pristopu se vzorec s pomoˇcjo posebne ploˇsˇce z luknjicami razdeli na posamezne particije, ki idealno vsebujejo vsaka svojo molekulo DNK ali pa so brez nje. PCR reakcije se nato vrˇsijo loˇceno v vsaki par- ticiji, konˇcni produkti pa so analizirani s fluorescentno kamero. Razlika s pristopom qPCR je v tem, da pri pristopu dPCR koncentracijo ˇzeljene se- kvence v vzorcu doloˇcimo na podlagi razmerja razliˇcnih fluorescentnih barvil

(20)

po samem postopku PCR, in ne v realnem ˇcasu.

Metoda droplet-digital PCR (ddPCR), ki so jo izumili Hindson in sode- lavci dobrih deset let kasneje, vzorec razdeli na posamezne particije kapljiˇcno z dodajanjem olja [10]. Boljˇso natanˇcnost omogoˇca zaznavanje fluorescence v vsaki kapljici vzorca po reakciji PCR loˇceno s posebno napravo. Takˇsen pri- stop analiziranja je trenutno izjemno uporaben v diagnosticiranju zgodnjih rakavih obolenj, saj omogoˇca natanˇcno zaznavanje zelo majhnih vsebnosti mutiranih celic.

2.3 Analiza ddPCR podatkov

Podatke metode ddPCR lahko predstavimo v obliki 1-D grafa (glej sliko 2.1), na katerem je upodobljena intenziteta fluorescence vsake kapljice v njihovem zaporedju [11]. Ker imajo kapljice s produkti PCR viˇsjo fluorescenco od negativnih, se doloˇci pragovna vrednost, ki graf razdeli na pozitivne in ne- gativne particije. Vendar pa doloˇcitev pragovne vrednosti ni enoznaˇcna in enostavna, predvsem je teˇzavna takrat, ko graf vsebuje veliko ”deˇzja“ (angl.

rain), torej kapljic z intenziteto fluorescence, ki se nahajajo med (oˇcitnima) negativno in pozitivno populacijo. Obiˇcajno programska oprema izbrane platforme ddPCR doloˇci pragovno vrednost ali pa jo roˇcno doloˇci uporab- nik sam. Oba pristopa nista idealna: pri prvem je lahko pragovna vrednost doloˇcena tako, da zajame tudi nekatere pozitivne kapljice kot negativne in obratno, pri drugi pa obstoji moˇznost napake uporabnika ter njegova pri- stranskost. Doloˇcitev pravilnega ˇstevila pozitivnih particij je pomembna, saj se iz nje izraˇcuna konˇcna koncentracija tarˇcne DNK v vzorcu. Pri tem se upoˇsteva tudi predvidevanje, da nakljuˇcna razporeditev molekul v particije sledi Poissonovi razporeditvi. To pomeni, da je v vsaki kapljici lahko tudi veˇcje ˇstevilo molekul. Povpreˇcno ˇstevilo molekul v particiji se izraˇcuna na podlagi razmerja med ˇstevilom DNK molekul v vzorcu in ˇstevilom generira- nih kapljic.

Da bi bilo kvantificiranje ddPCR podatkov ˇcimbolj poenoteno, so mnogi

(21)

Diplomska naloga 7

Slika 2.1: Graf intenzitete particij v odvisnosti od zaporedne ˇstevilke parti- cije. Povzeto po [11].

opisali svoje pristope. Ti veˇcinoma temeljijo na razliˇcnih statistiˇcnih izraˇcunih in so opisani v ˇclankih [7, 12, 13, 16, 40]. Po posvetu z mentorjema smo se odloˇcili, da je za potrebe analiz, ki jih ˇzelimo izvajati, najbolj primerna im- plementacija Lievensove metode, ki je opisana v ˇclanku [16].

2.4 Lievensova metoda

Antoon Lievens je leta 2016 s sodelavci objavil ˇclanek, v katerem je predstavil pristop za interpretacijo podatkov ddPCR [16]. Kategorizacija particij PCR na pozitivne, negativne in vmesne vrednosti (deˇz) temelji na statistiˇcnem izraˇcunu za oceno gostote jedra (angl. Kernel Density Estimation, KDE), to je neparametriˇcni izraˇcun za oceno gostote verjetnosti nakljuˇcne spremen- ljivke [26].

Prvi korak v Lievensovi metodi je izraˇcun KDE z metodo za izraˇcun gostote, v kateri je minimalna pasovna ˇsirina (angl. bandwidth) enaka 50.

Nato se z algoritmom sliding window [15] doloˇcita najbolj izrazita vrhova prvotnih ocen. Najbolj skrajna vrhova definirata zaˇcetne vrednosti mediane populacije (µ) in mediano povpreˇcnega odklona (σ) za zaˇcasno negativno (najbolj levo) in pozitivno (najbolj desno) gruˇco (angl. cluster).

(22)

Nato se vrednosti popravijo skozi 3 iteracije sledeˇce procedure. Vrednosti znotraj razpona a·σ okoli mediane, kjer je a = 4, se uporabijo za ponovni izraˇcun µ in σ. Naj bo k sploˇsˇcenost, potem se vrednost a posodablja po sledeˇci formuli [16]:

a= 4.55 + 0.35·log(k) + 0.045·log(k)2.

Da doseˇzemo stabilnost na eni decimalki, so dovolj 3 iteracije postopka.

Vrednosti, ki padejo med razpon ˆµ±a·σ, se klasificirajo pod pozitivno(p) aliˆ pa negativno(n) populacijo. Robova tega razpona se upoˇstevata kot vrhova za izraˇcun resolucije. Vrednosti med ˆµp±ap ·σˆp in ˆµn±an·σˆn se doloˇci za deˇz.

Za zadnjo kvantifikacijo se pragovno vrednost θ postavi direktno nad najviˇsjo mejo negative populacije z namenom zmanjˇsanja napake klasifikacije negativnih kapljic. Nato kapljice s fluorescenco niˇzjo od θ uvrstimo pod negativne, kapljice s fluorescenco viˇsjo od θ pa pod pozitivne. θ se tedaj izraˇcuna po formuli:

θ = ˆµn+ 1.5·an·σˆn.

Ce algoritem ne uspe najti veljavne pragovne vrednosti, se uporabi pribliˇˇ zek, ki ne temelji na populacijskih parametrih, ampak se namesto teh uporabi pribliˇzke, ki temeljijo na minimalnih vrednostih KDE, ki se doloˇcijo z algo- ritmomsliding window [16].

Za izraˇcun intervala zaupanja moramo najprej doloˇciti ˇstevilo ciljnih mo- lekul v particiji. Uporabimo Poissonovo porazdelitev za oceno povpreˇcnega ˇstevila ciljnih molekul v particiji:

λ =−logP(Yj = 0) =−logP(Yj = 0) =−log(1−P(Yk)1)).

Naj bockoncentracija inVpartition predviden konstantni volumen particij.

Koncentracija se tedaj lahko oceni kot povpreˇcno ˇstevilo kopij na particijo:

c= λ

Vpartition =−log(1−P(Yj = 1)) Vpartition .

(23)

Diplomska naloga 9 Naj bo ˆλ ocenjena vrednost koncentracije (= c), nneg ˇstevilo negativnih particij, npoz ˇstevilo pozitivnih particij in n ˇstevilo vseh particij. V tem primeru lahko interval zaupanja doloˇcimo po formuli [41]:

λˆ±1.96·

r npos nneg·n.

2.5 Paket dpcrAnalysis

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

(24)

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.

(25)

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 negativnih, ˇstevilo veljavnih, predvideno koncentracijo po Poissonovi porazdelitvi, spodnjo mejo intervala zaupa- nja za koncentracijo, zgornjo mejo intervala zaupanja 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.

(26)

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

(27)

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.

(28)

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.

(29)

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

(30)

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.

3.2 Zaledni sistem

Zaledni sistem oziroma streˇznik je del aplikacije, ki skrbi za povezavo do podatkovne baze, avtentikacijo odjemalcev in poslovno logiko. Dostop do zalednega sistema omogoˇca aplikacijski programski vmesnik (angl. applica- tion programming interface, API), ki je napisan po arhitekturnem vzorcu REST (angl. REpresentational State Transfer). To pomeni, da streˇznik ne hrani odjemalˇcevih stanj ali sej, zato mora ob vsakem zahtevku odjemalec v glavo zahtevka HTTP (angl. HyperText Transfer Protocol header) pripeti overitvene podatke. Pri vsakem klicu na streˇznik aplikacija zahteva, da upo- rabnik v glavo pripne vrednost JWT (angl. JSON Web bearer Token) ˇzetona (glej razdelek 3.2.3).

(31)

Diplomska naloga 17

3.2.1 Podatkovna baza Supabase

Podatki o uporabnikih se hranijo v podatkovni bazi Supabase [37], ki temelji na tipu baze PostgresSQL. PostgreSQL, ali tudi postgres, je odprtokodni sis- tem za upravljanje z objektno-relacijsko podatkovno bazo, ki strmi k temu, da v novejˇsih razliˇcicah sistema dodaja veˇc funkcionalnosti (angl. extensibi- lity) in da sledi skladnosti z SQL (angl. Structured Query Language).

Glavna niˇsa Supabase je, da je njena edina alternativna reˇsitev Google Firebase [18], ki je odprtokodna in ne temelji na ne-relacijskem dokumen- tnem tipu podatkovne baze NoSQL (angl. Non-relational SQL). Supabase ponuja zaledne storitve v oblaku, ki vkljuˇcujejo postgres podatkovno bazo, avtorizacijo z uporabniki, hrambo veˇcjih datotek in avtomatsko generiran API za podatkovno bazo.

3.2.2 Streˇ znik Node in Express

Node.js, ali krajˇse Node, je odprtokodno runtime okolje za razvijanje za- lednega dela v jeziku JavaScript, ki teˇce na eni niti v nasprotju z ostalimi modernimi alternativami. Temelji na modelu asinhronih dogodkov I/O (angl.

Input/Output) [39], kar omogoˇca neprekinjeno delovanje, saj ob prejemu zah- tevka Node posreduje zahtevek operacijskemu sistemu, ta pa ustvari nov pro- ces in Node lahko ponovno sprejema zahtevke.

Express.js, ali krajˇse Express, je odprtokodno zaledno programsko ogrodje (angl. framework), ki temelji na Node.js in je namenjeno gradnji spletnih aplikacij. Med drugimi ponuja dodatne knjiˇznice in vmesno programsko opremo (angl. middleware).

Primer kode 3.1 predstavlja izsek iz naˇse implementacije Express knjiˇznice v datoteki server.js, ki prikazuje, kako se inicializira aplikacija Express Node in posluˇsa zahtevke na vratih 3000.

c o n s t e x p r e s s = r e q u i r e (’ e x p r e s s ’) ; // U v o z i ’ E x p r e s s ’ p a k e t . ...

c o n s t app = e x p r e s s () ; // N a r e d i n o v o a p l i k a c i j o ...

(32)

c o n s t i n d e x A p i = r e q u i r e (’ ./ src / r o u t e r s ’) ; // U s m e r j e v a l n i k z a h t e v k o v

...

app . use ( e x p r e s s . j s o n () ) ; // Z a h t e v k i so v o b l i k i J S O N app . use (’ / api ’, i n d e x A p i ) ; // D e f i n i r a pot za d o s t o p API ,

k a t e r o m o r a j o k l i c a t i z a h t e v k i

// O b d e l a v a n a p a k

app . use (f u n c t i o n( err , req , res , n e x t ) { res . j s o n ( err ) ;

}) ;

// Z a z e n e s t r e z n i k na v r a t i h 3 0 0 0 app . l i s t e n (3000 , () = > {

c o n s o l e . log (’ A p p l i c a t i o n l i s t e n i n g on p o r t 3 0 0 0 . . . ’) ; }) ;

Izsek kode 3.1: Primer kode, ki inicializira aplikacijo Express.

3.2.3 JWT ˇ zetoni

JWT ˇzeton se v aplikaciji uporablja v mehanizmu avtorizacije z odjemalcem [14]. Uporabi se skupaj s procesom avtorizacije odjemalca. V primeru raz- vite aplikacije je to z e-poˇsto in geslom, ki odjemalcu odgovori z veljavnim ˇzetonom, a le v primeru, da se e-poˇsta in geslo ujemata.

JWT ˇzeton je kodiran vBase64-URLformatu, ki binarne podatke pretvori v niz [3]. Kod je sestavljen iz treh delov, ki so med sabo loˇceni s simbolom za piko. Prvi del je glava (angl. header), ki vsebuje podatke o tipu ˇzetona in tipu algoritma za overjanje. Drugi del je glavna vsebina (angl. payload), ki vsebuje registrirana, javna in zasebna polja (angl. claims). Registriranih polj je lahko veˇc (nad 10), nujno pa mora kod vsebovati sledeˇca polja:

• iss(angl. issuer) – identifikator za entiteto, ki izdaja JWT.

• sub(angl. subject) – identifikator, ki se dodeli subjektu.

• aud (angl. audience) – vrednost, ki identificira avtorizacijski streˇznik.

(33)

Diplomska naloga 19

• exp (angl. expiration time) – pove v katerem ˇcasovnem oknu se JWT lahko uporablja. Avtorizacijski streˇznik mora zavrniti vse JWT ˇzetone, katerim je exppretekel.

Javna in zasebna polja poljubno definira aplikacija, pri javnih poljih pa se mora aplikacija drˇzati tega, da ne razkriva preveˇc informacij o odjemalcu, zato so primerni npr. univerzalni enoliˇcni identifikatorji (angl. Universally Unique IDentifier, UUID ).

Zadnji del ˇzetona JWT je podpis (angl. signature), ki podpisuje zako- dirano glavo, glavno vsebino in skrivnost (angl. secret) z algoritmom, ki je specificiran v glavi. Podpis zagotavlja, da se sporoˇcilo na poti do prejemnika ni spremenilo.

3.2.4 Varna hramba gesel

Kljuˇcnega pomena je, da se gesla v zaledju ne hranijo v obliki navadnega teksta, saj bi ob morebitnem vdoru v bazo podatke lahko uporabili za pri- javo v sistem ali pa v druge sisteme, v katerih uporabniki uporabljajo enake overitvene podatke.

V tabeli uporabnikov v podatkovni bazi aplikacije se zato hranijo samo zgoˇsˇcene vrednosti gesla, ki so generirane s pomoˇcjo NPM (angl. Node Pac- kage Manager) paketa Bcrypt [4]. Uporabi se metoda genSalt, ki vrne sol (angl. salt). Sol je nakljuˇcna vrednost, ki se uporabi kot dodatni parameter v zgoˇsˇcevalni funkciji, in predstavlja dodaten sloj varnosti. Geslo in sol se nato uporabita v metodihash, ki pa vrne zgoˇsˇceno vrednost gesla. Za zgoˇsˇcevanje se uporabi simetriˇcen ˇsifrirni algoritem Blowfish, ki je bil izumljen leta 1993 in trenutno nima efektivne metode kriptoanalize [35].

3.2.5 Okoljska datoteka in okoljske spremenljivke

Vrednosti spremenljivk, ki vsebujejo obˇcutljive podatke, kot so URL (angl.

Uniform Resource Locator) povezava do podatkovne baze ali gesla, ni varno

(34)

shranjevati v repozitoriju, saj bi ob morebitnem dostopu nepooblaˇsˇcene osebe lahko nastala ˇskoda.

Podatke se zapiˇse v posebno okoljsko datoteko (glej izsek kode 3.2), ki se imenuje .env, in vsebuje vrednosti okoljskih spremenljivk (angl. enviroment variables). Okoljska datoteka se ustvari v korenski mapi v samem okolju, kjer se izvaja aplikacija.

Za uporabo okoljskih spremenljivk si aplikacija pomaga z NPM paketom dotenv, ki vrednosti iz .env naloˇzi v objekt process.env preko katere koda dostopa do vrednosti.

1 S U P A B A S E _ D B _ N A M E =" d a t a b a s e - pcr "

2 S U P A B A S E _ D B _ P A S S =" k d 7 d y s u 5 p 8 c 8 h 9 f v g e h g b 2 r b j d s m v m 9 r "

3 T O K E N _ K E Y =" v r x a f 9 5 y r p k 8 y 5 4 p u s j f q q g 6 7 k 6 2 k y 4 g "

Izsek kode 3.2: Primer vsebine datoteke .env

3.2.6 Integracija z R skriptami

Glavni problem aplikacije je predstavljala integracija R paketa dpcrAnalysis z zalednim delom aplikacije, saj je poslovna logika implementirana v jeziku Javascript, logika analize ddPCR podatkov pa v jeziku R.

Ta problem reˇsuje NPM paket r-integration, ki se namesti na zalednem delu aplikacije. Paket omogoˇca zagon poljubnih R ukazov in skript iz okolja NodeJS. Integracija deluje na operacijskem sistemu Windows in na opera- cijskih sistemih, ki temeljijo na GNU/Linux. Uporablja sistemske klice, da dostopa do strojne kode R [31].

NodeJS dostopa do metod dpcrAnalysis paketa preko asinhrone metode callMethodAsync(”assets/R/dpcrWrapper.R“, imeFunkcije, seznamArgumentov), kjer je:

• ”assets/R/dpcrWrapper.R“ – pot do skripte, v kateri sem napisal funk- cije, ki implementirajo dpcrAnalysis paket

• imeFunkcije– ime funkcije, ki jo ˇzelemo izvesti

(35)

Diplomska naloga 21

• seznamArgumentov – seznam z argumenti, ki se podajo funkciji. V primeru aplikacije so to podatki ddPCR.

3.2.7 Klicanje API z vmesnikom Postman

Za dostop do API od zalednega sistema aplikacije se lahko uporablja tudi programsko opremo, namenjeno za poˇsiljanje HTTP zahtevkov. Da bi se izognili konstantni postavitvi ˇcelnega sistema za namene testiranja sprememb zalednega sistema, se uporabi programsko opremo Postman, ki predstavlja ogrodje z grafiˇcnim vmesnikom za testiranje razvoja vmesnika API [29].

Koda za testiranje razvite aplikacije je napisana v programskemu jeziku JavaScript in se nahaja v repozitoriju [30].

3.2.8 Paketi NPM

Upravitelj paketov za Node (angl. Node Package Manager, NPM) je privzeti upravitelj paketov za aplikacije JavaScript. V zalednem sistemu se uporablja sledeˇce pakete za zahtevno procesiranje datotek:

• excelJS – uporablja se za branje CSV podatkov in generiranje Excel poroˇcil [22].

• csv-merger– omogoˇca zdruˇzevanje veˇcjih CSV datotek [21].

• papaparse – uporablja se za pretvorbo CSV formata v JSON format in obratno [25].

• multer –middleware za upravljanje z naloˇzenimi datotekami [23].

3.2.9 Struktura direktorijev in plasti

Za ime krovne datoteke streˇznika NodeJS, ki se nahaja v korenski mapi, sem izbral imeserver.js, saj je to privzeto ime, ki ga kliˇce ukaz za zagon aplikacije NodeJS (npm start).

(36)

V korenski mapi se poleg avtomatsko generiranih map, ki se ustvarijo s prevedbo kode, nahajajo ˇse mape:

• assets, ki vsebuje vso kodo, ki ni napisana v jeziku Javascript – v naˇsem primeru so to R skripte.

• tmp, ki vsebuje naloˇzene podatke ddPCR s strani odjemalcev in po- datke rezultatov analiz. Te vsebujejo slike grafov in CSV datoteke rezultatov metod analiz.

• src, ki vsebuje datoteje tipa JavaScript.

Znotraj mape srcse nahajajo mape:

• controllers– vsebuje kontrolnike. To so skripte, ki obravnavajo zahtevke in vrnejo ustrezni odgovor glede na posredovane podatke.

• helpers– vsebuje skripte z logiko, ki ni neposredno vezana na zahtevke in se ne povezuje na podatkovno bazo.

• middleware – vsebuje skripte, ki se poˇzenejo pred vsakim zahtevkom.

Uporabne so predvsem za preverjanje veljavnosti ˇzetonov JWT.

• models– vsebuje skriptodb.js, ki skrbi za generiranje instance povezave na podatkovno bazo.

• routers– vsebuje skriptoindex.js, v kateri so zapisane poti API oziroma vstopne toˇcke za aplikacijo, v katerih se kliˇcejo metode iz kontrolnikov.

• services– vsebuje skripte s poslovno logike aplikacije in izvaja poizvedbe (angl. queries) nad tabelami v podatkovni bazi.

3.3 Celni sistem ˇ

Celni del aplikacije uporabnikom omogoˇˇ ca interakcijo z zalednim delom preko grafiˇcnega vmesnika, ki ga izriˇse brskalnik. Ker je za interpretacijo kode

(37)

Diplomska naloga 23 odvisen brskalnik, je aplikacija na voljo na vseh operacijskih sistemih, ki imajo na voljo brskalnik, ki podpira Angular (glej razdelek 3.3.1).

Prvotni namen ˇcelnega sistema je dobra uporabniˇska izkuˇsnja (angl. User eXperience, UX). Za sploˇsen pogled aplikacije poskrbi Bootstrap (glej razde- lek 3.3.3) v kombinaciji z datotekami tipa scss.

3.3.1 Angular

Angular [2] je razvojno okolje, zgrajeno na TypeScript programskem jeziku, prvotno pa je temeljil na jeziku Javascript [8].

V razvojnem okolju ponuja ogrodje za grajenje skalabilnih spletnih apli- kacij, ki temelji na modulih in komponentah. Vkljuˇcuje tudi zbirko integri- ranih knjiˇznic, ki med drugimi poskrbijo za preusmerjanje (angl. routing), upravljanje obrazcev (angl. forms) in komunikacijo odjemalec-streˇznik.

3.3.2 CSS, SASS in SCSS

Kaskadne stilske podloge (angl. Cascading Style Sheets, CSS) so podloge z zbirko pravil, ki definirajo izgled HTML elementov.

SASS (angl. Syntactically Awesome Style Sheets) je predprocesni stil- ski jezik, ki se prevede v CSS [34]. Uporablja se skriptni jezik SassScript in generira datoteke tipa SCSS (angl. Sassy CSS). SCSS so podloge, ki so nadmnoˇzica CSS, saj ponujajo dodatne funkcionalnosti. Te so med dru- gimi moˇznost definiranja spremenljivk, uvaˇzanje stilskih podlog, dedovanje in boljˇsa sintaksa za ugnezdene elemente v DOM drevesu.

3.3.3 Bootstrap 5

Bootstrap je knjiˇznica, ki temelji na jezikih HTML, CSS in JavaScript. Po- nuja zbirko barv, velikosti, pisav, ikon, razporeditev ipd. za HTML elemente v obliki CSS razredov (angl. class). Namen knjiˇznice je ustvariti enoten iz- gled za tekst, tabele, obrazce ipd. v vseh spletnih brskalnikih. Razvila sta ga

(38)

Mark Otto in Jaco Thornton v Twitterju leta 2011 z namenom, da znotraj podjetja ponudi konsistentnost pri razvijanju izgleda programske opreme [6].

Glavna komponenta knjiˇznice Bootstrap je dinamiˇcna odzivnost na veli- kost zaslona in razvijalcem ponuja, da zaslonske maske istoˇcasno prilagodijo na mobilne naprave in veˇcje zaslone.

3.3.4 Paketi NPM

Tako kot v zalednem sistemu, sem tudi v ˇcelnem delu aplikacije uporabil NPM pakete, saj so ti na voljo tudi za Angular. Za izboljˇsanje uporabniˇske izkuˇsnje in hitrejˇso implementacijo sem uporabili sledeˇce pakete:

• ngx-drag-to-select – uporablja se v pogledu za analizo podatkov in omogoˇca izbiro datotek v matriki z naˇcinom ”drag-to-select” s kazalcem in z zaslonom na dotik (glej sliko 5.10).

• ngx-toastr – uporablja se za dinamiˇcno sporoˇcanje rezultata zahtevkov, ki se poˇsiljajo iz ˇcelnega sistema v zaledni sistem [24]. V aplikaciji je uporabno za sporoˇcanje stanje preteˇcenega JWT ˇzetona, uspeˇsno prijavo in za sporoˇcanje morebitnih napak (glej sliko 3.1).

• ag-grid-angular – uporablja se za implementacijo rezultatov v obliki ta- bel (glej sliko 5.11) in ponuja preprost API za izvoz v CSV obliki [20].

3.3.5 Struktura direktorijev

Izbira imena map v projektih Angular je predvsem enoliˇcna, saj je standard, da se vse datoteke generira s pomoˇcjo vmesnika Angular z ukazno vrstico (angl. Command-Line Interface, CLI).

TypeScript datoteke se nahajajo v korenski mapi src in nato ˇse znotraj mape, ki ima ime modula. Ker je razdelitev aplikacije po modulih znaˇcilna za veˇcje aplikacije, je celotna aplikacija napisana znotraj enega modula, in se koda nahaja znotraj mape app.

(39)

Diplomska naloga 25

Slika 3.1: Vse razliˇcice sporoˇcila toast, ki vsebuje stanje odgovora zahtevku.

Sporoˇcila se pojavijo v zgornjem desnem delu zaslonske maske.

(40)
(41)

Poglavje 4

Funkcionalnosti aplikacije

V tem poglavju predstavimo implementirane funkcionalnosti razdeljene po modulih iz zaˇcetnih specifikacij. Pri razvoju smo bili ˇse posebej pozorni na preprostost uporabe. Tako smo dosegli, da lahko aplikacijo uporabljajo tudi posamezniki, ki nimajo izkuˇsenj na podroˇcju bioinformatike.

4.1 Administracija uporabnikov

Akterji v aplikaciji so uporabniki (angl. users) in raˇcuni (angl. accounts).

Vsak, ki hoˇce uporabljati aplikacijo, mora najprej ustvariti svojega uporab- nika. Ustvarimo ga lahko na pogledu za registracijo, kjer vnesemo podatke o imenu, e-poˇsti in geslu. Novega uporabnika lahko ustvari administrator posameznega raˇcuna, ki mu bo uporabnik pripadal. Za vpis v aplikacijo ozi- roma za pridobitev ˇzetona JWT je potrebna veljavna kombinacija e-poˇste in gesla.

Namen administracije v kombinaciji z analizo podatkov je raˇcunom (ki predstavljajo skupnosti, kot so npr. podjetja, organizacije, laboratoriji) omogoˇciti hierarhiˇcno razporeditev pravic znotraj raˇcuna in vsem uporab- nikom omogoˇciti analizo podatkov s konˇcnim poroˇcilom, od katerega izgled je odvisen od nastavitev raˇcuna. Do nastavitev raˇcuna imajo dostop zgolj uporabniki z administrativnimi pravicami.

27

(42)

Uporabniki so vezani na raˇcun s tujim kljuˇcem (angl. Foreign Key, FK) accountIdv tabeli User in imajo razliˇcne vloge znotraj raˇcuna, ki jih definira enumerator role:

• Normal user – se lahko vpiˇse v aplikacijo in izvaja analize nad ddPCR podatki.

• Admin– vse zgornje pravice z moˇznostjo dodajanja novih uporabnikov in moˇznostjo spreminjanja parametrov raˇcuna.

• Super admin – vse zgornje pravice z moˇznostjo dodajanja novih upo- rabnikov tipa Admin.

• Account owner – vse zgornje pravice z moˇznostjo izbrisa raˇcuna.

Vsi uporabniki raˇcuna so vidni na pogledu ”Users“, na katerem je viden tudi enoliˇcni identifikator uporabnika, ime, e-poˇsta in ˇcas zadnje prijave uporab- nika. Do nastavitve raˇcuna, to so vrednosti v vrstici tabele Account, imajo dostop le uporabniki z administrativnimi pravicami.

4.2 Branje podatkov

Pred vsako analizo mora uporabnik iz svoje naprave naloˇziti datoteke, nad katerimi se bo izvedla analiza (glej primer datoteke 4.2). Datoteke morajo biti v formatu CSV in ime datoteke mora vsebovati ime jamice (angl. well), ki se ne smejo ponavljati. Po uvozu se na zaslonski maski pojavi seznam za izbor datotek in matrika s 96 celicami, ki simbolizira ploˇsˇcico ddPCR analize.

Seznam in matrika sluˇzita temu, da uporabnik izbere datoteke za analizo.

4.3 Analiza podatkov

Uporabnik na pogledu za analizo po izbiri datotek pritisne na gumb, ki proˇzi zahtevek na streˇznik. Na streˇzniku je API pot (angl. endpoint), ki vse

(43)

Diplomska naloga 29 Ch1 Amplitude Ch2 Amplitude Cluster

221.572678 326.629517 1

650.5166 668.474243 1

747.755432 2348.20044 4

767.777344 1133.22485 1

771.1468 975.220642 1

813.3121 1098.19006 1

815.9533 1306.76038 1

839.457458 1051.11035 1

843.774048 2162.58716 4

846.478943 1226.15088 1

847.5787 3091.73267 4

856.4978 1827.21765 4

857.153748 1113.07825 1

880.9818 3138.661 4

882.840637 2261.66772 4

883.8038 1091.05872 1

888.845764 2435.35254 4

898.1292 1035.37341 1

898.9427 1183.1853 1

899.489258 1197.412 1

899.720154 1129.73987 1

903.0348 1173.57275 1

905.0708 1186.40857 1

905.4309 1192.92444 1

905.757141 2392.27368 4

905.96875 2891.57031 4

906.343567 3471.31665 4

906.755249 2819.96558 4

907.0817 2409.82813 4

Tabela 4.1: Primer dela datoteke z veˇc tisoˇc vrstic podatkov ddPCR.

(44)

kodirane datoteke CSV naloˇzi v na novo kreirano mapo, ki se nahaja znotraj korenske mape.

Streˇznik nato nad datotekami v mapi izvede analizo oziroma metode, im- plementirane s pomoˇcjo R paketa dpcrAnalysis. Med izvedenemi metodami je vedno Lievensova metoda [16], opcijsko pa se lahko uporabnik odloˇci, da se izvedejo Dreova [7], Jonesova [13] in/ali Jacobsova metoda [12].

Rezultati vsake metode se zapiˇsejo v novo CSV datoteko, ta pa vkljuˇcuje tabelo, ki jo vrne metodapreformAnalysis v R paketu.

4.4 Izvoz podatkov in poroˇ cila

Po konˇcani analizi uporabnik na zaslonski maski vidi HTML tabele z rezultati analize. Vsako tabelo lahko uporabnik izvozi v CSV formatu. Pred izvozom lahko doloˇci ˇse loˇcilo med celicami in Booleovo vrednost, ki pove, ˇce imajo vrednosti v celicah narekovaje.

V naslednjem koraku lahko uporabnik v vnosna polja vnese opombo in vrednost deˇzja (angl. rain), ki je dopusten za vzorce. Vneˇseni vrednosti se kasneje uporabita pri generiranju poroˇcila.

V zadnjem koraku uporabnik klikne na gumb za generiranje poroˇcila.

Poroˇcila na prvi strani vkljuˇcuje podatke o uporabniku, ˇcasovni ˇzig, podatke o analiziranih datotekah, opombo in dopustno vrednost za deˇz.

(45)

Poglavje 5

Primer uporabe aplikacije

V tem poglavju bom predstavil, kako se uporablja spletna aplikacija z vidika grafiˇcnega vmesnika. Aplikacijo lahko razdelimo na dva veˇcja modula, in sicer na administracijo uporabnikov ter raˇcunov in na analizo podatkov ddPCR.

5.1 Administracija

V tem razdelku predstavimo poglede za upravljanje z uporabniki in raˇcuni.

5.1.1 Registracija

Uporabnik lahko na pogledu ”register”(glej sliko 5.1) ustvari uporabnika in nov raˇcun. Vnesti mora e-poˇsto, ime, geslo in ponovitev gesla. Zahtevek za registracijo se proˇzi ob klicu na gumb, ˇce so vsi podatki pravilno izpolnjeni.

Ce kateri podatek ni veljaven, se pod vnosom izriˇse sporoˇˇ cilo o napaki (glej sliko 5.2).

5.1.2 Vpis

Uporabnik, ki ima registrirano svojo e-poˇsto oziroma se ta nahaja v podat- kovni bazi, lahko dobi dostop do aplikacije preko pogleda ”login“ z obrazcem za prijavo, ki zahteva podatke o e-poˇsti in geslu (glej sliko 5.3). Ob kliku na

31

(46)

Slika 5.1: Pogled za vnos podatkov za registracijo.

Slika 5.2: Izpolnjen obrazec za registracijo s primeri napak.

gumb za vpis in ob veljavnih vhodnih podatkih, se poˇslje zahtevek za vpis v zaledje, ta pa v primeru pravilnih overitvenih podatkov odgovori s JWT ˇzetonom, ki ima dobo trajanja 2 uri.

(47)

Diplomska naloga 33

Slika 5.3: Pogled za vpis uporabnika v aplikacijo.

5.1.3 Pregled uporabnikov

Na pogledu ”users“ (glej sliko 5.4) namenjenemu za pregled uporabnikov se nahaja tabela z uporabniki, od katerih jeaccountIdenak raˇcunu uporabnika, ki je v JWT ˇzetonu zahtevka. V zgornjem desnem kotu se nahaja gumb za dodajanje novega uporabnika.

V vsaki vrstici tabele se nahajajo podatki: enoliˇcni identifikator (ID), ime (Name), e-poˇsta (Email) in ˇcasovni ˇzig zadnje prijave (Last Sign-in). V vsaki vrstici je tudi gumb za izbris in spreminjanje uporabnika.

Za izbris uporabnika sta potrebna dva pritiska. Sprva pritisk na gumb za izbris in nato pritisk na potrditveni gumb (glej sliko 5.4), ki proˇzi zahtevek za izbris. Ob uspeˇsnem zahtevku se v vrstico uporabnika v podatkovni bazi v polje deleted zapiˇse vrednost1. Zapiˇse se tudi trenutni ˇcasovni ˇzig v polje dateDeleted. Uporabniki z vrednostjodeleted postavljeno na1se na pogledu ne izpisujejo.

5.1.4 Dodajanje uporabnika

Na pogledu ”users/add“ se nahaja obrazec, podoben tistemu iz pogleda za registracijo (glej sliko 5.5). Ob veljavnih podatkih se ob kliku na gumb sproˇzi

(48)

Slika 5.4: Pogled za pregled uporabnikov in primer izbrisa uporabnika.

zahtevek za dodajanje uporabnika.

Slika 5.5: Pogled za dodajanje uporabnika.

5.1.5 Spreminjanje nastavitev uporabnika

Nastavitve uporabnika lahko spreminjamo na pogledu ”users/:id“(glej sliko 5.6), kjer id definira uporabnika, ki ga ˇzelimo obravnavati. Pogled med dru-

(49)

Diplomska naloga 35 gim omogoˇca tudi resetiranje (pozabljenih) gesel.

Slika 5.6: Pogled za spreminjanje uporabniˇskih podatkov.

5.1.6 Nastavitve raˇ cuna

Administratorji lahko na pogledu ”settings“ pregledujejo in spreminjajo tre- nutne vrednosti raˇcunov (glej sliko 5.7). Zahtevek za posodobitev vrednosti se proˇzi ob pritisku na gumb.

5.2 Analiza podatkov ddPCR

Analiza je razdeljena na veˇc korakov, ki si morajo slediti po vrsti. Izvajajo se na pogledu “analyze” (glej sliko 5.8). Pravice do analize imajo vsi prijavljeni uporabniki.

5.2.1 Branje podatkov

V prvem koraku, preko vnosa za datoteke, uporabnik iz datoteˇcnega sistema naprave v aplikacijo naloˇzi datoteke, nad katerimi bo izvajal analizo.

(50)

Slika 5.7: Pogled z nastavitvami raˇcuna.

Slika 5.8: Prvi obisk pogleda za izvajanje analiz.

5.2.2 Izbira podatkov

Na razpolago sta dva zavihka, z razliˇcnim naˇcinom izbire. Prvi je izbira s seznamom (angl. list view), kjer uporabnik preko potrditvenega polja (angl.

checkbox) potrdi izbiro datoteke (glej sliko 5.9). Privzeta vrednost izbire je pozitivna.

(51)

Diplomska naloga 37

Slika 5.9: Izbiranje treh datotek iz seznama za datoteke.

Drugi naˇcin izbire je grafiˇcni (angl. well matrix view) in predstavlja format ploˇsˇcice s 96 luknjicami (angl. wells) za vzorce (glej sliko 5.10). V podjetju namreˇc pri vseh analizah ddPCR uporabljajo ravno tako ploˇsˇcico, analizo pa nato izvajajo po vrsticah, stolpcih ali pa poljubno, zato tak naˇcin prikaza uporabniku pomaga pri izbiri veˇcjih koliˇcin datotek. Datoteke za analizo uporabnik izbira s posameznim klikom na celico ali pa na naˇcin angl.

drag-to-select. V katero celico v matriki spada doloˇcena datoteka, se doloˇci tako, da se ime datoteke, denimo “ImePloˇsˇce A02 Amplitude.csv”, razdeli na 3 dele:

• ImePloˇsˇce – vrednost doloˇci izvajalec in nima vedno enakega ˇstevila znakov.

• A – v kateri vrstici na ploˇsˇci se nahaja vzorec.

• 02 – v katerem stolpcu na ploˇsˇci se nahaja vzorec.

V tretjem koraku se nahaja izbirni gumb (angl. radio button), s katerim uporabnik doloˇci, kateri kanal bo vkljuˇcen v analizo v primeru, da je v vzorcu oziroma jamici veˇc kot en kanala.

(52)

Slika 5.10: Izbiranje veˇc datotek z matriko, ki je podobna ploˇsˇci s 96 jami- cami.

5.2.3 Analiza in pregled

V ˇcetrtem koraku se nahajajo gumbi, ki proˇzijo zahtevek za analizo podatkov na streˇzniku. Na streˇznik se poˇsljejo vse izbrane datoteke. Ker se procesi- rajo velike datoteke (velike od 100KB do 1MB), traja pribliˇzno 5 sekund na datoteko, da streˇznik odgovori na zahtevek. Odgovor vkljuˇcuje JSON format tabele. Tabele se nato izriˇsejo na pogledu, pod tabelo pa se nahaja tudi obra- zec za izvoz v CSV formatu in ponuja spreminjanje loˇcitvenega znaka (angl.

delimiter) ter moˇznost zapisa vrednosti z navednicama (glej sliko 5.11).

5.2.4 Poroˇ cilo

Ob konˇcani analizi poleg tabel JSON odgovor vsebuje ˇse vrednost reportId – ID mape na streˇzniku, ki vsebuje vse potrebne informacije za generiranje poroˇcila.

V ˇsestem koraku se nahajata dve vnosni polji. V prvo vnosno polje upo- rabnik vpiˇse morebitne zapiske. V drugo vnosno polje se zapiˇse (decimalna) ˇstevilka, ki definira dopustno mejo za odstotek deˇzja.

(53)

Diplomska naloga 39

Slika 5.11: Izris dveh tabel za Lievensovo in Jonesovo metodo.

Ob kliku na gumb v sedmem koraku se na streˇznik poˇslje zahtevek, na katerega streˇznik odgovori z datoteko XLSX (angl. Microsoft Excel Open XML Spreadsheet ). Datoteka oziroma preglednica vsebuje veˇc zavihkov, ki so opisani v nadaljevanju.

Zavihek Info

Na prvi strani so zapisani vsi podatki, ki niso direkten rezultat metod za analizo (glej sliko 5.12). Ti podatki so:

• podatki o izvajalcu analize (name, email, id, accountId);

• ˇcasovni ˇzig v Lokalnem formatu;

• ˇcasovni ˇzig v UTC formatu;

(54)

• zapiski;

• mejna vrednost odstotka deˇzja;

• seznam imen analiziranih datotek.

Slika 5.12: Zavihek z informacijami o analizi.

Zavihek Plots

Na drugem zavihku se nahajajo 3 slike grafov (glej sliko 5.13). Grafa 1 in 2 prikazujeta rezultat Lievensove metode. Graf 3 prikazuje primerjavo koncentracij med izvedenimi metodami.

Zavihki Lievens, Jones, Dreo in Jacobs

Ostali zavihki imajo imena po izvedenih metodah (glej sliko 5.14). Vsebujejo tabelo s stolpci well, nPositive, nNegative, concentration, lowerBound, upper- Bound, nRain. Vsem metodam, razen Lievens, streˇznik pripne ˇse dva dodatna stolpca:

• percentageRain – deleˇz deˇzja po formuli nRain/nValid.

(55)

Diplomska naloga 41

Slika 5.13: Zavihek s tremi grafi rezultatov.

• rainGreaterThanCutoff – vsebuje vrednost True, ˇce je vrednost percen- tageRainveˇcja od definirane mejne vrednosti deˇzja. V nasprotnem pri- meru vsebuje vrednost False.

Slika 5.14: Zavihek s tabelo rezultatov Jacobsove metode analize.

(56)
(57)

Poglavje 6 Zakljuˇ cek

V okviru diplomskega dela sem razvil aplikacijo, ki omogoˇca izvedbo osnovnih analiz podatkov ddPCR in s tem zadostuje podanim specifikacijam. Razvita reˇsitev je enostavna za uporabo za vsakega uporabnika in omogoˇca izvaja- nje funkcij, ki jih je podjetje ˇzelelo: tvorjenje uporabniˇskih raˇcunov, izvoz poroˇcila, analiziranje veˇc podatkov hkrati itd. Z naˇcinom pisanja kode, ki omogoˇca skalabilnost in je dobro dokumentirana, aplikacija omogoˇca moˇznost relativno enostavne nadgradnje z dodatnimi funkcionalnostmi v bliˇznji pri- hodnosti.

Aplikacijo bi lahko nadgradili s ˇstevilnimi dodatnimi funkcionalnostmi, kot je na primer vkljuˇcitev formule za izraˇcun ˇstevila kopij tarˇc v vzorcu (namesto uporabe pribliˇzka) [11, p. 55], izraˇcun resolucije s spremenljivkami iz poglavja 2.4 kot opisano v [16], definiranje velikosti genoma organizma, v katerem se meri tarˇco, generiranje poroˇcil v drugih formatih, poˇsiljanje poroˇcil preko e-poˇste, revizijska sled (angl. audit log) itd. Kljub moˇznostim za ˇstevilne nadgraditve pa je aplikacija za izvajanje analiz podatkov ddPCR uporabna ˇze v trenutni obliki in tako predstavlja smiselno zaokroˇzeno celoto.

43

(58)
(59)

Clanki v revijah ˇ

[1] Antonio Alonso in sod. “Real-time PCR designs to estimate nuclear and mitochondrial DNA copy number in forensic and ancient DNA studies”. V: Forensic science international 139.2-3 (2004), str. 141–

149.

[7] Tanja Dreo in sod. “Optimising droplet digital PCR analysis approa- ches for detection and quantification of bacteria: a case study of fire blight and potato brown rot”. V:Analytical and bioanalytical chemistry 406.26 (2014), str. 6513–6528.

[9] Russell Higuchi in sod. “Kinetic PCR analysis: real-time monitoring of DNA amplification reactions”. V:Bio/technology11.9 (1993), str. 1026–

1030.

[10] Benjamin J Hindson in sod. “High-throughput droplet digital PCR system for absolute quantitation of DNA copy number”. V:Analytical chemistry 83.22 (2011), str. 8604–8610.

[12] Bart KM Jacobs in sod. “Model-based classification for digital PCR:

your umbrella for rain”. V:Analytical chemistry 89.8 (2017), str. 4461–

4467.

[13] Mathew Jones in sod. “Low copy target detection by Droplet Digi- tal PCR through application of a novel open access bioinformatic pi- peline,‘definetherain’”. V: Journal of virological methods 202 (2014), str. 46–53.

45

(60)

[16] A Lievens in sod. “Measuring digital PCR quality: performance para- meters and their optimization”. V: PloS one 11.5 (2016), e0153317.

[19] Kary B Mullis in Fred A Faloona. “Specific synthesis of DNA in vitro via a polymerase-catalyzed chain reaction”. V: Methods in enzymology 155 (1987), str. 335–350.

[26] Emanuel Parzen. “On estimation of a probability density function and mode”. V:The annals of mathematical statistics 33.3 (1962), str. 1065–

1076.

[38] PJ Sykes in sod. “Quantitation of targets for PCR by use of limiting dilution”. V: Biotechniques 13.3 (1992), str. 444–449.

[39] Stefan Tilkov in Steve Vinoski. “Node. js: Using JavaScript to build high-performance network programs”. V: IEEE Internet Computing 14.6 (2010), str. 80–83.

[40] Wim Trypsteen in sod. “ddpcRquant: threshold determination for sin- gle channel droplet digital PCR experiments”. V: Analytical and bioa- nalytical chemistry 407.19 (2015), str. 5827–5834.

[42] Bert Vogelstein in Kenneth W Kinzler. “Digital PCR”. V:Proceedings of the National Academy of Sciences 96.16 (1999), str. 9236–9241.

[43] Peng Zhou in sod. “Discovery of a novel coronavirus associated with the recent pneumonia outbreak in humans and its potential bat origin”.

V: BioRxiv (2020).

(61)

Clanki v zbornikih ˇ

[5] Gavin Bierman, Mart´ın Abadi in Mads Torgersen. “Understanding typescript”. V:European Conference on Object-Oriented Programming.

Springer. 2014, str. 257–281.

[15] Chang-Hung Lee, Cheng-Ru Lin in Ming-Syan Chen. “Sliding-window filtering: an efficient algorithm for incremental mining”. V:Proceedings of the tenth international conference on Information and knowledge management. 2001, str. 263–270.

[35] Bruce Schneier. “Description of a new variable-length key, 64-bit block cipher (Blowfish)”. V: International Workshop on Fast Software En- cryption. Springer. 1993, str. 191–204.

[36] Jeremy Siek in Walid Taha. “Gradual typing for objects”. V:European Conference on Object-Oriented Programming. Springer. 2007, str. 2–27.

47

(62)
(63)

Poglavja v knjigah

[18] Laurence Moroney. “The firebase realtime database”. V:The Definitive Guide to Firebase. Springer, 2017, str. 51–71.

49

(64)
(65)

Celotna literatura

[1] Antonio Alonso in sod. “Real-time PCR designs to estimate nuclear and mitochondrial DNA copy number in forensic and ancient DNA studies”. V: Forensic science international 139.2-3 (2004), str. 141–

149.

[2] Angular web framework.url:https://angular.io/docs(pridobljeno 14. 9. 2021).

[3] Base64-URL encoding documentation. url: https : / / datatracker . ietf.org/doc/html/rfc4648#section-5(pridobljeno 17. 9. 2021).

[4] NPM package Bcrypt. url: https://github.com/kelektiv/node.

bcrypt.js(pridobljeno 13. 9. 2021).

[5] Gavin Bierman, Mart´ın Abadi in Mads Torgersen. “Understanding typescript”. V:European Conference on Object-Oriented Programming.

Springer. 2014, str. 257–281.

[6] Bootstrap (front-end framework).url:https://blog.getbootstrap.

com/(pridobljeno 15. 9. 2021).

[7] Tanja Dreo in sod. “Optimising droplet digital PCR analysis approa- ches for detection and quantification of bacteria: a case study of fire blight and potato brown rot”. V:Analytical and bioanalytical chemistry 406.26 (2014), str. 6513–6528.

[8] Brad Green in Shyam Seshadri. AngularJS. ”O’Reilly Media, Inc.”, 2013.

51

(66)

[9] Russell Higuchi in sod. “Kinetic PCR analysis: real-time monitoring of DNA amplification reactions”. V:Bio/technology11.9 (1993), str. 1026–

1030.

[10] Benjamin J Hindson in sod. “High-throughput droplet digital PCR system for absolute quantitation of DNA copy number”. V:Analytical chemistry 83.22 (2011), str. 8604–8610.

[11] Bio-Rad Laboratories Inc.Droplet Digital PCR Application Guide Bul- letin 6407. English. Ver. B. Bio-Rad Laboratories Inc. 9. sep. 2021.

[12] Bart KM Jacobs in sod. “Model-based classification for digital PCR:

your umbrella for rain”. V:Analytical chemistry 89.8 (2017), str. 4461–

4467.

[13] Mathew Jones in sod. “Low copy target detection by Droplet Digi- tal PCR through application of a novel open access bioinformatic pi- peline,‘definetherain’”. V: Journal of virological methods 202 (2014), str. 46–53.

[14] Michael Jones, Brain Campbell in Chuck Mortimore. JSON Web To- ken (JWT) profile for OAuth 2.0 client authentication and authoriza- tion Grants. 2015. url: https : / / tools . ietf . org / html / rfc7523 (pridobljeno 12. 9. 2021).

[15] Chang-Hung Lee, Cheng-Ru Lin in Ming-Syan Chen. “Sliding-window filtering: an efficient algorithm for incremental mining”. V:Proceedings of the tenth international conference on Information and knowledge management. 2001, str. 263–270.

[16] A Lievens in sod. “Measuring digital PCR quality: performance para- meters and their optimization”. V: PloS one 11.5 (2016), e0153317.

[17] Harvey Lodish in sod. Molecular cell biology. Macmillan, 2008.

[18] Laurence Moroney. “The firebase realtime database”. V:The Definitive Guide to Firebase. Springer, 2017, str. 51–71.

(67)

Diplomska naloga 53 [19] Kary B Mullis in Fred A Faloona. “Specific synthesis of DNA in vitro via a polymerase-catalyzed chain reaction”. V:Methods in enzymology 155 (1987), str. 335–350.

[20] NPM package AG Grid Angular Component. url: https://www.ag- grid.com/javascript-data-grid/ (pridobljeno 17. 9. 2021).

[21] NPM package csv-merger.url:https://github.com/behroozk/csv- merger (pridobljeno 17. 9. 2021).

[22] NPM package ExcelJS. url: https://github.com/exceljs/exceljs (pridobljeno 17. 9. 2021).

[23] NPM package Multer. url:https://github.com/expressjs/multer (pridobljeno 17. 9. 2021).

[24] NPM package ngx-toastr toast messages. url: https://github.com/

scttcper/ngx-toastrs (pridobljeno 17. 9. 2021).

[25] NPM package Papa Parse. url: https://www.papaparse.com/ (pri- dobljeno 17. 9. 2021).

[26] Emanuel Parzen. “On estimation of a probability density function and mode”. V:The annals of mathematical statistics 33.3 (1962), str. 1065–

1076.

[27] Aleksander Merhar.Zaledni del aplikacije.url:https://github.com/

AleksanderMerhar/pcr-app (pridobljeno 2. 9. 2021).

[28] Aleksander Merhar. Celni del aplikacije.ˇ url: https://github.com/

AleksanderMerhar/pcr-app-frontend(pridobljeno 2. 9. 2021).

[29] Postman platform for API development. url:https://www.postman.

com/company/about-postman/(pridobljeno 17. 9. 2021).

[30] Aleksander Merhar.Postman dokumentacija testnih klicev na streˇznik.

url:https://documenter.getpostman.com/view/13574413/U16qJiKL (pridobljeno 17. 9. 2021).

[31] NPM package R-integration.url:https://github.com/FabrizioSandri/

r-integration(pridobljeno 13. 9. 2021).

Reference

POVEZANI DOKUMENTI

Diplomska naloga predstavlja razvoj spletne aplikacije ter mobilne aplikacije, ki omogoˇ ca nalaganje slik na streˇ znik, urejanje slik na streˇ zniku ali na lokal- nem raˇ

V naˇsem primeru so preko njega povezani stroji s streˇ zniki OPC DA in podatkovna baza Microsoft SQL spletne aplikacije za upravljanje z recepti, kar nam omogoˇ ca nalaganje

Sistem za upravljanje podatkovnih baz je programska oprema, ki omogoˇ ca definiranje, kreiranje in vzdrˇ zevanje podatkovne baze ter zagotavlja hkraten in nadzorovan dostop do

Po- glavju (upravljanje sistema, naˇ crtovanje logiˇ cnega modela, pripravljanje poroˇ cil itd.), omogoˇ ca tudi prenos podatkov iz transakcijske podatkovne baze v po-

Naloga aplikacije na telefonu Android je zajem podatkov senzorjev, pretvorba surovih podatkov v logiˇ cne koliˇ cine in komunikacija z raˇ cunalnikom preko povezave Bluetooth..

Uporabniku ni potrebno zapu- stiti aplikacije ali prekiniti z vnosom podatkov, saj se zajem slike dogaja v loˇ cenem procesu, kar omogoˇ ca hkraten vnos preko uporabniˇskega vmesnika

Kot primer uporabe Oculus Rifta za vizualizacijo prostora je predstavljena aplikacija, ki omogoˇ ca vnos veˇ cnadstropnega prostora, elementov prostora kot so okna, vrata in

Nadzorni sistem preko protokola SNMP omogoˇ ca prenos podatkov stanja temperaturnih senzorjev z raˇ cunalnika Ra- pberry Pi. Na podlagi odstopanj temperature nadzorni sistem sproˇ