• No results found

Visualiseringsverktyg för en proteindatabas

N/A
N/A
Protected

Academic year: 2021

Share "Visualiseringsverktyg för en proteindatabas"

Copied!
57
0
0

Loading.... (view fulltext now)

Full text

(1)

20-X4

Visualiseringsverktyg

för

en

proteindatabas

Gustav

Ahlström,

Linn

Beckman,

Rebecka

Berglin,

Frida

Forssell,

Albin

Lundin,

Viktor

Säde,

Ida

Wettergren

Beställare:

Olink

Proteomics

Beställarrepresentant:

Henning

Henschel

Handledare:

Fredrik

Pettersson

1MB332, Självständigt arbete imolekylär bioteknik, 15hp, vt2020 Civilingenjörsprogrammet imolekylär bioteknik

(2)

Abstract

In this report we have explored and evaluated visualization tools to be applied on a

protein-biomarker database. This project was given to us from Olink Proteomics AB with the intention of applying a visualisation tool on their website. A visualization tool can be useful in many ways, as it can both provide a deeper understanding of data and can also be an easier way for customers to explore Olink’s products.

We have identified and analyzed 10 visualization tools based on given criteria. Such criteria include searchability, interactiveness, adaptability and aesthetic appeal. These tools differ somewhat in their form, some are programming libraries, some are finished software and others are something in between. Based on these criteria we have made a few

recommendations concerning key differences between each tool. If Olink wants a finished local software that requires a small degree of customization we would recommend

Cytoscape. If they on the other hand want a completely finished software GraphXR would suit their needs. If they are looking for a software that allows visualizations outside of

(3)

Innehållsförteckning

1. Ordlista 3

2. Licenser 5

3. Rekommenderade verktyg 6

4. Olinks intresse av ett visualiseringsverktyg 7

5. Analys 8

5.1 Kombinationer av verktyg 10

5.2 Motiveringar till våra verktygsrekommendationer 10

5.2.1 GraphXR 10

5.2.2 JavaScript-bibliotek 11

5.2.3 Cytoscape 12

5.2.4 Dash och NetworkX 12

5.2.5 Neo4j 13 5.2.6 Gephi 13 5.2.7 Graphstream 14 6. Visualiseringsverktyg 15 6.1 Krav på visualiseringsverktyg 15 6.2 Svårbedömda krav 15 6.3 Utforskade verktyg 16 6.3.1 Cytoscape 17 6.3.2 Cytoscape.js 19 6.3.3 Dash 21 6.3.4 D3.js 23 6.3.5 Gephi 26 6.3.6 GraphStream 28 6.3.7 GraphXR 31 6.3.8 Neo4j 33 6.3.9 NetworkX 35 6.3.10 Sigma.js 37

7. Vidare arbetsgång för Olink 40

8. Hur skapas ett etiskt försvarbart visualiseringsverktyg? 41

8.1 Att visualisera information på ett opartiskt sätt 41 8.2 Hur presenteras ny data utan att förvränga visualiseringen 41

8.3 Hur ska Olink gå tillväga? 42

9. Författarnas tack 43

(4)

11. Referenser 46

12. Bilagor 52

12.1 Introduktion till Olink Proteomics 52

(5)

1. Ordlista

Bibliotek: Ett bibliotek innebär att det finns kod tillgänglig att välja av, där olika funktioner redan är definierade.

Biomarkör: En biologisk respons på viss förändring.

CSS: Cascading Style Sheets. Ett programmeringsspråk som används för att presentera dokument skrivna i markup language.

DOM: Data Object Model. En trädmodell som skapas när en hemsida laddas in. Varje nod i DOM motsvarar en del av hemsidan, t.ex. <body>.

GO-term​: Också kända som GO-klasser. GO-termer används för att navigera Gene

Ontology (GO) kunskapsbas som består utav biologisk data.

Graf​: En graf består av en mängd noder och kanter som tillsammans bildar ett nätverk.

Grafdatabas: En grafdatabas är en databas där all information lagras i form av en graf, med

noder och kanter.

GUI: Graphical User Interface. Det grafiska användargränssnittet mellan användare

och program/dator.

HTML: Hyper Text Markup Language. HTML är ett markup language som används

för de flesta hemsidor. Det gjort för att annotera dokument och skapar “ryggraden” för en hemsida.

JSON: JavaScript Object Notation. Ett kompakt filformat för utbyte av data.

JVM: Java Virtual Machine. Program som kan köra program som är skrivna i programmeringsspråket Java.

Kant: En koppling mellan olika noder. Denna koppling motsvarar en relation

mellan noderna i praktisk tillämpning.

Nod: En unik datapunkt inom en graf. Motsvarar något i praktisk tillämpning,

(6)

Open source: Mjukvara som släppts med en licens där skaparen tillåter användare att

modifiera, använda och distribuera mjukvaran.

Panel: Produkt som Olink erbjuder. Använder biomarkörer för att detektera

eftersökta proteiner.

Plugin: En mjukvarukomponent. En plugin tillägger en specifik funktion till ett

existerande datorprogram.

Style Sheet: Ett style sheet används för att bestämma layout på hemsidor eller i

dokument, där ett exempel är CSS för HTML.

SVG: Scalable Vector Graphics. Grafikspråk som används för att skapa invecklade former/animationer.

Verktyg: Mjukvara som används för att visualisera någon form av data. Synonymt med

(7)

2. Licenser

BSD 3-Clause: ​En licens för fri programvara. Licensen tillåter modifikation av produkten,

privat bruk, kommersiell användning och distribution.

Upphovsrättshavaren ansvarar inte för hur produkten används. ​(“The 3-Clause​ BSD License,” n.d.)

LGPL: ​Lesser General Public License är en licens för fri programvara. Licensen

tillåter användning, modifikation och distribution. ​(“GNU Lesser General ​Public License version 3,” n.d.)

MIT-licens: ​En licens från 1980-talet från ​Massachusetts Institute of Technology

(8)

3. Rekommenderade verktyg

Nedan rekommenderar vi fyra olika program alternativt programmeringsbibliotek, som vi anser vara av intresse för Olink att utforska vidare baserat på den information vi har analyserat. Dessa fyra erbjuder alla olika möjligheter och skiljer sig främst i hur

färdigutvecklade de är samt hur mycket egen programmering som krävs för att framställa en komplett visualisering.

Om Olink vill utgå från en färdig lokal programvara, som erbjuder en viss möjlighet till egen programmering, men som också kräver plugins skulle vi rekommendera Cytoscape framför Gephi. Detta på grund av att Cytoscape är mer anpassat för biologisk data och fortfarande uppdateras regelbundet till skillnad från Gephi.

Om de däremot vill använda sig av ett komplett program med begränsade möjligheter till egna förändringar skulle vi välja GraphXR framför Neo4j. Detta eftersom GraphXR kan integreras på en hemsida samt erbjuder flera av de intressanta funktionerna, vilket gör programmet bättre lämpat.

Vill Olink ha ett verktyg som också erbjuder möjligheten att skapa visualiseringar utanför nätverksperspektivet rekommenderar vi pythonbiblioteket Dash framför D3.js. Dash är i vår mening mer specifikt lämpad och enklare att använda än D3.js då enbart python krävs för programmeringen.

(9)

4. Olinks intresse av ett visualiseringsverktyg

I detta projekt är målet att undersöka möjligheterna till att utveckla alternativt hitta ett

befintligt interaktivt visualiseringsverktyg som uppfyller Olink Proteomics (hädanefter Olink) krav, dessa nämns i avsnitt 6.1 Krav på Visualiseringsverktyg. För en mer ingående

(10)

5. Analys

(11)
(12)

5.1 Kombinationer av verktyg

Vid en mer djupgående analys av samtliga verktyg har vi konstaterat att flera av dem klarar av att uppfylla merparten av de kriterier Olink har ställt på egen hand. I vissa fall verkar det dock vara mer fördelaktigt att kombinera flera verktyg för en optimalare visualisering. Ett verktyg kan till exempel fungera väldigt bra vid lokal användning, men sedan sakna

förmågan att integreras på en hemsida online. En lösning är att kombinera programmet med andra program som bidrar med den funktionalitet som saknas. Några av de verktygen som presenteras nedan är även lämpliga att använda tillsammans för ett optimalt

visualiseringsverktyg.

En kombination som kan verka intuitiv att göra är kombinationen av flera JavaScript bibliotek. Efter att ha undersökt dem är det dock inte något vi kan rekommendera. Detta då det kan uppstå konflikter mellan dem i till exempel datahantering.

5.2 Motiveringar till våra verktygsrekommendationer

I detta avsnitt diskuterar vi de olika verktygen utifrån fakta i avsnitt 6.3. Utforskade Verktyg. Det är främst våra åsikter som presenteras samt våra rekommendationer kring verktygen. Vi diskuterar även huruvida verktygen är relevanta, alternativt om de kommer bli mer eller mindre relevanta i framtiden.

5.2.1 GraphXR

Vi anser att GraphXR är ett mycket intressant verktyg att utforska vidare. Dels uppfyller verktyget i stor utsträckning de krav Olink har såsom sökbarhet, filtrerbarhet samt möjlighet att integrera grafen på en hemsida. Vi uppfattar det även som att det är möjligt att importera ny data till ett nätverk som redan är integrerat på en hemsida. Därmed borde kunder kunna importera egen data till det redan existerande nätverket vilket är en funktion vi inte hittat hos något annat verktyg hittills. Dessutom är det ett nylanserat verktyg som uppdateras

kontinuerligt vilket vi ser som en stor fördel eftersom detta troligtvis innebär att verktyget kommer att ha stöd av utvecklarna inom den närmsta framtiden.

(13)

relevant funktionerna presenteras. Med tanke på verktygets alla fördelar och möjligheter bedömer vi att GraphXR är ett av de verktygen som är av intresse för Olink att utforska vidare.

5.2.2 JavaScript-bibliotek

JavaScript-bibliotek har en stor fördel eftersom de visualiseringar som de skapar kan

integreras direkt på en hemsida. De kräver heller inte att datan skickas till någon extern part utan all data kan sparas på en lokal server. Tjänster byggda från dessa JavaScript-bibliotek skrivs själv från grunden. Detta tillåter mer flexibilitet, men gör att det tar mer tid att skapa visualiseringar i jämförelse med andra färdiga program.

Vi tror att Cytoscape.js är av störst intresse för Olink att vidare undersöka. Cytoscape.js och Sigma.js är två relativt lika JavaScript-bibliotek som båda visualiserar nätverk och har bra interaktiva möjligheter. Några betydande skillnader finns dock, exempelvis hur biblioteken hanterar skapandet av grafer. I Sigma.js är det vanligt att grafer som är gjorda med ett annat verktyg importeras eftersom det inte har egna grafritningsalgoritmer utan behöver

information om position, storlek och liknande för att kunna rita upp en graf. Cytoscape.js har däremot flera olika algoritmer och layouter för att skapa grafer utifrån data men kan även hantera importerade grafer. Att behöva importera grafer från andra program till Sigma.js är något som vi tycker är krångligare än att göra grafen direkt, som i Cytoscape.js eller D3.js. Dock tycker vi också att det är relativt enkelt att importera en graf från exempelvis Gephi om man skulle vilja använda Sigma.js.

Cytoscape.js har enligt oss också en bättre och mer estetisk visualisering, men kan ha

problem vid hantering av större grafer. Exakt vad som är en större graf har vi svårt att avgöra och eftersom det också beror på hårdvaran är det något som Olink måste undersöka vidare. Sigma.js kan däremot hantera stora grafer utan problem men har inte lika bra visualiseringar enligt oss. Cytoscape.js uppdateras ständigt, till skillnad från Sigma.js som uppdateras mer sällan, och det är inte omöjligt att Cytoscape.js i framtiden kan hantera större grafer bättre. Vi vet inte vilka uppdateringar som kommer i framtiden, men det kan vara värt att veta att det kan komma fler funktioner.

(14)

Vi tycker att Cytoscape.js uppfyller alla Olinks krav däribland interaktivitet, sökbarhet samt att data kan sparas på privat server. På andra plats rekommenderar vi D3.js. D3.js är en flexibel mjukvara men det kan ta tid att arbeta med den eftersom sökfunktioner och grafer behövs skapas från grunden. Sist skulle vi rekommendera Sigma.js. Allt Sigma.js erbjuder kan Cytoscape.js och D3.js göra minst lika bra eller bättre, förutom vid större grafer.

5.2.3 Cytoscape

Cytoscape är ett program som vi tycker har många fördelar. Det består av en färdigskriven grund och sedan kan bygga vidare på. Detta ger en bra möjlighet att anpassa programmet till sitt ändamål, så att det både fungerar och ser ut som önskat. Att hitta befintliga plugins och förstå deras funktioner bör inte vara något problem, eftersom det finns en appstore där alla listas. En annan fördel är att kunna skriva en egen plugin med en ny funktion. Kombinationen av grundprogrammet, färdigskrivna plugins och egna plugins är något som vi tycker gör Cytoscape extra flexibelt.

En fördel vi tycker att Cytoscape har framför andra verktyg är att programmet skapades för att kunna hantera biologisk data. Exempelvis finns en färdig plugin som hämtar GO-termer från en databas. En nackdel är att enbart Cytoscape inte kan användas för att integrera

visualiseringen på en hemsida. För att lösa detta går det att använda Cytoscape.js; det finns en grundfunktion i Cytoscape som tillåter konvertering av sin graf från Cytoscape till

Cytoscape.js. Genom Cytoscape.js går det att ladda upp grafen. Vid exportering av grafen förflyttas datan och funktionerna till en JSON-fil. Som vi har förstått, borde funktioner hos grafen i Cytoscape inte gå förlorade när datan exporteras till en JSON-fil och behålls alltså när ett annat program sedan visualiserar datan. En stor fördel vid användning av Cytoscape gentemot att bara använda Cytoscape.js är att koden behöver inte skrivas från grunden, men vi tänker oss att en nackdel med det är att det kan vara omständigt att jobba i två program istället för att jobba i Cytoscape.js direkt.

5.2.4 Dash och NetworkX

Sett till de efterfrågade kraven är NetworkX inte ett separat verktyg som vi skulle

rekommendera till Olink, eftersom verktyget inte möjliggör visualisering av data om det inte kombineras med andra verktyg. Det som däremot är fördelaktigt är att NetworkX ofta tillämpas i sammanhang av att lagra data där det även står för själva strukturen bakom

nätverket. Eftersom verktyget saknar visualiseringsförmåga av den data som lagras, är ett bra alternativ för den aspekten att kombinera NetworkX med Dash, alternativt använda tillägget Dash-Cytoscape. Det sistnämnda alternativet är relativt nytt och lanserades i början av 2019. Denna kombination av verktyg verkar framställa bra visualiseringar.

(15)

man däremot göra nätverk rekommenderar vi Dash-Cytoscape, då den kombinationen kan framställa ett stiligt nätverk med många funktioner genom att bara skriva i python. Vid användning av Dash-Cytoscape följer de interaktiva funktionerna med från Dash och

graf-algoritmerna med från Cytoscape. Denna lösning verkar lovande med tanke på att det är så pass nytt. Anledningen till varför enbart NetworkX skulle tillämpas kan vara för att få en bra struktur och lagring av datan och dessutom verkar dessa verktyg vara enkla att

kombinera.

En sak som vi ser som en stor fördel med Dash är att biblioteket, förutom att göra

visualiseringar, också gör webbapplikationer utan att användaren behöver skriva någon kod i varken JavaScript eller HTML, ett markup language. Vi tycker att det känns väldigt smidigt att enbart behöva använda python för att göra detta. Därmed borde arbetet att publicera en webbapplikation där data visualiseras vara relativt enkelt att genomföra.

5.2.5 Neo4j

Angående Neo4j anser vi att det finns några positiva faktorer som gör tjänsten intressant, men samtidigt flera negativa faktorer som minskar relevansen för tjänsten idag. Vi anser att de sök- och interaktions-funktioner som finns är ganska bra. När det kommer till filtrering och vyanpassning går det att göra till viss del, dock tycker vi att detta var ganska krångligt då det inte är särskilt intuitiva funktioner i programmet. Detta innebär att kunder skulle få det svårt att anpassa visualiseringarna till sin egen önskan, utan att spendera en väsentlig mängd tid för att lära sig verktyget. Eftesom det heller inte går att integrera verktyget direkt i en hemsida anser vi att detta tillför ytterligare en aspekt som gör det ointressant i jämförelse med flera av de andra verktygen. Idag är Neo4j inte är den tjänst som Olink bör titta vidare på, dock är möjligheterna för integrering på webbsida under utveckling vilket gör att det kan vara en intressant tjänst i framtiden.

5.2.6 Gephi

(16)

problem i framtiden om verktyget inte hänger med i utvecklingen. Det finns även andra verktyg med en liknande grund, såsom Cytoscape, som uppdateras kontinuerligt och som har möjligheter Gephi saknar, däribland möjligheter som rör visualisering av biologisk data. I jämförelse med de andra verktygen som vi utforskat anser vi därför inte att Gephi är det mest relevanta för Olink i dagsläget.

5.2.7 Graphstream

(17)

6. Visualiseringsverktyg

I nuläget har Olink ett visualiseringsverktyg, kallat Olink Explorer ​(“Olink Explorer,” n.d.)​, för att ge en översikt av proteomet samt vilka delar de kan erbjuda paneler och information om, men också vilka delar de saknar information om. Visualiseringen visar GO-termer, används för att navigera Gene Ontology (GO) kunskapsbas, och sedan kan man ta reda på vilka proteiner som är associerade med respektive term, den visar alltså inte proteinerna från början. Detta verktyg erbjuder dock inte interaktiva aspekter såsom sökbarhet utan enbart möjligheten att sortera efter paneler. Ett mer användbart visualiseringsverktyg för deras kunder är därmed efterfrågat.

6.1 Krav på visualiseringsverktyg

För att kunna presentera ett bättre visualiseringsverktyg än det som Olink har nu, krävs det att verktyget ska erbjuda fler anpassningsbara sökmöjligheter med eventuell koppling till

relevanta databaser samt Olinks paneler. Dessutom ska det ge en tydligare översikt av kopplingen mellan olika proteiner, biologiska system och sjukdomar. För en översiktlig bild som visar hur de olika verktygen uppfyller dessa krav​, ​se Figur 2 i avsnitt 6.3 Utforskade Verktyg.

Vi har utvärderat verktygen efter följande kriterier som vi har erhållit från Olink i projektbeställningen:

- Filtrering av sökning - Pris

- Uppdatering av verktyget på egen hand - Snygg layout - Ingen lagring av data hos extern part - Sökbart - Olika vyer av nätverket baserat på olika annoteringar - Interaktivt

- Lagring av data i noder & kanter - Visualiseringen är - Visualisering av 1100 (snart 3000 st) proteiner utan problem intuitiv

6.2 Svårbedömda krav

(18)

filtreringsfunktioner inom vissa verktyg men detta kräver en del programmering som vi inte har haft tid att lära oss.

6.3 Utforskade verktyg

I följande del presenteras en mer djupgående genomgång av funktioner och egenskaper för respektive verktyg som analyserats. För en översiktlig bild över vilka krav respektive verktyg uppfyller se tabellen i Figur 2 nedan. Gemensamt för alla verktyg är att de först introduceras i form av en kort bakgrund som sedan följs av en allmän beskrivning av tjänsten och till sist avslutas med egna reflektioner kring verktyget. För sammanställning av de översiktliga för- och nackdelarna av varje verktyg, se Figur 1 i avsnitt 5 Analys.

Figur 2. Figuren ger en översiktlig bild över de utvärderade verktygen samt vissa av de utvärderade kraven från projektbeställningen.

(19)

6.3.1 Cytoscape

Figur 3. Exempel på hur ett nätverk med noder och kanter visualiserat med Cytoscape kan se ut. Används med Cytoscapes tillstånd (“Samples Created by 3.x,” n.d.).

Bakgrund:

Cytoscape är ett datorprogram skrivet i Java, skapat med syftet att visualisera biologisk data. Programmet skapades år 2002 (“Cytoscape Product Roadmap,” n.d.) och underhålls idag av the National Resource for Network Biology (NRNB) med finansiellt stöd från the U.S. National Institute of General Medical Sciences (NIGMS). Den senaste versionen är Cytoscape 3 som färdigställdes i maj 2016 ​(“What is Cytoscape?,” n.d.)​ och en ny

uppdatering av Cytoscape 3 släpps varje halvår, i mitten av april och i mitten av oktober. 15 april 2020 släpptes Cytoscape 3.8, vilket för tillfället är den senaste versionen ​(“Release Notes,” n.d.)​.

Om tjänsten:

Cytoscape är en open source mjukvara som är skriven i Java och är under en LGPL-licens (“Download Cytoscape,” n.d.)​. Programmet består av en färdigskriven grund som heter Core (“What is Cytoscape?,” n.d.)​. Core är ett fungerande program i sig, där datan är sökbar, den kan visualiseras och filtreras. Utöver det kan funktionaliteten utökas genom att bygga vidare på Core med plugins, benämns som appar av Cytoscape. Cytoscape har en appstore

(20)

noder, “MiMIplugin”, som i sin tur används för att lägga till egna annoteringar i noderna och “GOlorize”, som ändrar visualiseringen efter GO-termer. Saknas det en specifik funktion som man vill ha, går det att skriva en egen plugin, skicka det till Cytoscapes utvecklare som i sin tur, förhoppningsvis, godkänner användning ​(“Cytoscape Product Roadmap,” n.d.)​. Notera att man inte äger rättigheten till detta plugin, utan att den hamnar under samma licens som Cytoscape.

I Cytoscape lagras datan i noder och kanter som sedan kan visualiseras på olika sätt beroende på vad för plugins som används. Ett exempel på en visualisering gjord i Cytoscape finns i Figur 3. Det finns inte information om vilka plugins som användes när bilden skapades, men den visar ändå ett av många möjliga sätt som programmet kan användas på.

Cytoscape kan inte integrera sin visualisering på en hemsida själv, utan behöver exportera datan till exempelvis Cytoscape.js och integrera den därifrån ​(“What is Cytoscape?,” n.d.)​. Funktionerna i Cytoscape följer då med i exporteringen. Att exportera datan till Cytoscape.js är enkelt, eftersom den funktionen finns som en grundfunktion i Cytoscape. Datan exporteras till en JSON-fil som kan läsas in av Cytoscape.js. Eftersom datan exporteras till en JSON-fil kan den också visualiseras av andra verktyg utöver Cytoscape.js, så länge verktyget kan läsa in JSON-filer. Ett exempel på ett verktyg där det borde fungera är D3.js.

Egna reflektioner:

(21)

6.3.2 Cytoscape.js

Figur 4. Exempel på nätverk från en demo på Cytoscape.js där gen-gen interaktioner visualiseras (“Cola.js,” n.d.). Används med Cytoscape.js tillstånd.

Bakgrund:

Cytoscape.js är ett JavaScript bibliotek, som skapades av Donnelly centre i University of Toronto ​(“About Cytoscape.js,” n.d.)​. Donnelly centre är ett forskningscentrum för cellulär och biomolekylär forskning och Cytoscape.js har i grunden skapats för att underlätta biologisk forskning (“Donnelly Centre for Cellular and Biomolecular Research,” n.d.). Cytoscape.js underhålls kontinuerligt varje vecka och deras senaste version släpptes i början av 2020 ​(​Cytoscape.js​, 2020)​. Den första versionen släpptes 2015 ​(Franz et al., 2016)​.

Om tjänsten:

(22)

Cytoscape. Cytoscape.js kan importera grafer som är i JSON format (“Elements JSON,” n.d.). Cytoscape.js erbjuder också många plugins, även kallat extensions i detta sammanhang, för att anpassa verktyget men inga av dessa behövs för att använda biblioteket utan är endast till för extra funktioner såsom fler layouter. Cytoscape.js har stöd för många olika slags grafer och algoritmer. De jobbar också konstant med att utöka stödet för fler slags grafer ​(“Graph Model,” n.d.)​.

Cytoscape.js kan hantera tusentals grafelement på en genomsnittlig hårdvara ​(Franz et al., 2016)​. Vid större grafer än det kan prestandan sjunka något och för att åtgärda detta kan komplexiteten på grafen minskas. Man kan också försöka minska antal kanter mellan noderna för att de är extra kostsamma. Det finns också andra optimeringsmöjligheter som ökar

prestandard ​(“Performance,” n.d.)​.

Stylingen i Cytoscape.js har liknande struktur som CSS, ett programmeringsspråk som används för att presentera dokument skrivna i markup language, och med så lika syntax som möjligt. Det gör att det går att skapa en personlig design av graferna eller använda färdiga stilmallar ​(“Style,” n.d.)​. Det finns också många layouter på graferna som kan användas. Cytoscape.js är stort stöd för interaktivitet och har stöd för både webbläsare på datorer och mobiltelefoner ​(“About,” n.d.)​. Cytoscape.js har stöd för alla rörelser och interaktivitet som det är förväntat att ett interaktivt verktyg har.

Cytoscape.js har stöd för filtrering, både på villkor som exempelvis under eller över en viss storlek men också vissa noder som tillhör en utvald grupp, exempelvis en panel. Sortering kan också väljas efter egenskaper hos kanterna ​(“Eles.filter,” n.d.)​. Det finns också funktioner för sökbarhet över noder ​(“Search,” n.d.)​. Enligt en demo ​(“Wine & Cheese Map,” n.d.)​ på deras hemsida verkar också sökning efter annoteringar relaterade till noden och namnet på noden möjligt. Annoteringar lagras i textformat till varje tillhörande nod.

Egna reflektioner:

Cytoscape.js ger eleganta och intuitiva visualiseringar. Baserat på deras egna demos

(23)

6.3.3 Dash

Figur 5. Exempel på en interaktiv webbapplikation skapad med Dash från en demo på Plotlys hemsida. Visualiseringen visar Uber resor gjorda i New York (“Dash - Uber Data App,” n.d.). Används med Dashs tillstånd.

Bakgrund:

Dash är ett Python-bibliotek som utvecklats av företaget Plotly. Det lanserades 2017 och har i nuläget 200 000 nedladdningar per månad ​(“Plotly About us,” n.d.)​ och används av företag som Apple, Tesla och First Republic Bank ​(“Dash Kubernetes,” n.d.)​. Syftet med Dash är att kunna bygga interaktiva webbapplikationer där data illustreras utan att det behövs användas varken HTML eller JavaScript ​(Plotly, 2017)​. För ett exempel av hur en webbapplikation skulle kunna se ut, se Figur 5.

Om tjänsten:

Dash finns tillgängligt i två versioner; Dash Open Source och Dash Enterprise. Dash Open Source är gratis att använda, till skillnad från Dash Enterprise som är en betaltjänst ​(“Dash Overview,” n.d.)​. Det verkar som att Olink inte behöver använda Dash Enterprise för att lansera en webbapplikation, utan att det ska räcka med Open Source versionen då denna är MIT licensierad ​(Plotly, 2017)​. Med Enterprise versionen fås dock flera hjälpmedel, bland annat ett “Design Kit” för att designa applikationer utan att skriva CSS och hjälp från Plotlys team ​(“Dash Overview,” n.d.)​.

Dash är skrivet utifrån Flask, Plotly.js och React.js ​(“Introduction to Dash” n.d.)​. React är ett JavaScript-bibliotek som används för att skapa interaktiva användargränssnitt ​(“React – A JavaScript library for building user interfaces,” n.d.)​. Flask är ett “web-application

(24)

former av diagram såsom scatter plots och heatmaps göras och det går också att göra diagram i 3D ​(“Plotly JavaScript Graphing Library,” n.d.)​. Ingen data som används i Plotly.js skickas till Plotlys servrar om det inte anges​(Parmer, 2020)​. Dock verkar det inte som att det finns någon inbyggd funktion i Plotly för att visualisera data i nätverk.

Däremot är man inte begränsad till att enbart använda Plotly för att visualisera data.

Exempelvis kan ett nätverk göras i NetworkX som sedan importeras till Dash för att ha med det i en webbapplikation. I sådana fall är det också möjligt att göra nätverket interaktivt genom bland annat musklickningar och musrörelse ​(Lok, 2018)​. Det är även möjligt att lägga till sökrutor för att kunna söka efter en specifik nod i ett importerat NetworkX nätverk

(Wang, 2019)​.

Ett annat sätt att visualisera data i nätverk i Dash är att använda sig av Dash Cytoscape. Som det hörs på namnet är denna komponent skriven utifrån Cytoscape.js och möjliggör

användaren att skapa nätverk direkt i Dash ​(“Dash Cytoscape,” n.d.)​. Nätverket går att göra interaktivt i Dash och användaren kan exempelvis uppdatera vilka noder och kanter som visas eller vilken layout nätverket har. För att tackla problemet med allt för “fullspäckade” nätverk finns också några lösningar i Dash Cytoscape. Exempelvis finns det en lösning som innebär att nätverket expanderar när användaren klickar på en nod. Detta innebär att användaren inte behöver visa hela nätverket från början utan låter användaren klicka fram de delar av

nätverket som den är intresserad av. En annan lösning innebär att hela nätverket visas hela tiden men att den nod som klickas på, tillsammans med sammanlänkade noder lyser upp i en helt annan färg än resten av nätverket ​(Plotly, 2017)​.

Ett annat tillägg är “Dash for R” som låter användaren skapa Dash applikationer med programmeringsspråket R. Detta innebär att det går att lägga in modeller från R till Dash. “Dash for R” är även kompatibel med tillägget “Dash Bio” ​(Plotly, 2019a)​ som används för att bygga bioinformatiska visualiseringar ​(Plotly, 2019b)​ såsom Manhattan-plots eller Alignment Charts ​(“Dash App Gallery,” n.d.)​.

Dash verkar uppfylla de flesta av Olinks krav. Det går att söka efter data samt att filtrera data och visualisera den i olika vyer. Det finns många interaktiva möjligheter. Utöver de redan nämnda interaktionerna finns bland annat drop-down menyer, sliders, radio buttons och checkboxes. Det går också att lägga innehåll i olika flikar ​(“Dash Core Components,” n.d.)​, lite på samma sätt som i Excel. Eftersom Dash är ett Python-bibliotek erbjuder detta

(25)

Egna reflektioner:

Vi tror att Dash skulle vara ett bra verktyg för Olinks ändamål. Det känns enkelt att använda och väldigt smidigt i och med att man kan bygga interaktiva visualiseringar och göra

webbapplikationer genom samma bibliotek, också utan att använda JavaScript eller HTML. De demoprogram vi tittat på ​(“Dash App Gallery,” n.d.)​ är enkla att förstå och dessutom tycker vi att de är väldigt eleganta. Det känns också bra att Dash går att kombinera med andra visualiseringstjänster som NetworkX om den inbyggda grafkomponenten skulle visa sig vara otillräcklig.

6.3.4 D3.js

(26)

Bakgrund:

Data Driven Documents (D3) är ett open source JavaScript bibliotek skapat av Mike Bostock. Den första versionen av D3.js släpptes 2011. D3.js uppdateras kontinuerligt och den senaste versionen, 5.16.0, blev tillgänglig 2020 via d3js.org ​(Bostock, n.d.)​. Varje version är gratis att ladda ner och programvaran är under en BSD-3 license. I grunden binder D3.js data till en DOM, en trädmodell som skapas när en hemsida laddas in, för att kunna applicera olika transformationer, hur datan ska se ut, till dokumentet ​(Bostock, n.d.)​. Ett exempel på detta är att koppla en array till en cirkel, en treemap eller ett SVG-element, används vid mer

invecklade animationer. Efteråt kan denna cirkeln utföra olika animationer. Om det finns definierat i D3.js biblioteket kan data kopplas till det.

Hur visualiseringar skapade av D3.js ser ut beror mycket på hur biblioteket används. Datan kan visualiseras på många olika vis och inte nödvändigtvis som ett nätverk. För en basal visualisering gjord i D3.js se Bilaga 12.4. Mike Bostock har själv gjort demos där han hanterar mer invecklade animationer med hjälp av D3.js. Det finns ett flertal av dessa animationer på observable.com ​(“D3 / Observable,” n.d.)​. Se Figur 6 för ett exempel. Mike skriver också ut den koden han använder i varje animation vilket kan bidra till inspiration och hjälp. “Collision Detection” och “Force-Directed Graph” är två bra exempel på hur interaktivt D3.js kan vara.

Om tjänsten:

Eftersom D3.js är baserat på JavaScript blir det relativt enkelt att integrera D3.js i redan existerande HTML hemsidor ​(Programming with Mosh, 2018a)​ ​(Kellerher, 2015)​. Det finns inga unika krav på datan som D3.js ska presentera, till exempel att den behövs laddas upp hos en extern part ​(Fullstack Academy, 2017)​. Programmeraren behöver endast hänvisas till var informationen går att hämta vilket i sin tur tillåter att all data sparas på lokal hårdvara

(Kellerher, 2015)​. Vidare har D3.js fördelen att alla DOM som skapas uppdateras automatiskt när ens data ändras utan behov av någon ny kodning. Om exempelvis en ny biomarkör

tillförs, biologisk respons på viss förändring, i databasen uppdateras visualiseringen direkt. När integrering av D3.js till en hemsida sker krävs kunskap inom HTML och CSS för optimal användning; DOM skapade av D3.js behöver integreras med CSS- och HTML- kod

(Programming with Mosh, 2018b)​. Detta kan vara en nackdel om användaren inte är van vid dessa språk.

(27)

Angående kapacitet och sökbarhet beror det på hur D3.js implementeras. Kapaciteten beror på serverutrymme snarare än D3.js-biblioteket ​(Programming with Mosh, 2018a)​. Angående sökbarhet beror det på hur D3.js appliceras då det inte har någon specifik sökfunktion inom biblioteket, men med JavaScript går det att skapa en sökfunktion. Yining Shi skapade en visualisering där hon presenterade olika avhandlingar från New York University från

1933-2014. I visualiseringen använde hon D3.js för att läsa av informationen från en CSV-fil samt för att skapa effekterna när användaren drar i noderna ​(Shi, n.d.)​.

Egna reflektioner:

D3.js har stor potential och begränsningarna av mjukvaran är små i jämförelse mot vad en användare kan få fram med D3.js. Angående detaljer, som att koppla GO-termer till noder eller ett namn mellan en kant, går det att lösa via JavaScript kommandon.

(28)

6.3.5 Gephi

Figur 7. Nätverket har utformats i verktyget Gephi med hjälp av exempeldata (“GEXF File Format,” n.d.). Exempeldatan berör EuroSIS-projektet som fokuserar på att kartlägga interaktioner mellan Science in Society-aktörer för att få en uppfattning om vilka aktörer som är mest aktiva samt inflytelserika. Noderna i nätverket representerar de olika aktörerna.

Bakgrund:

Det första Gephi-projektet påbörjades år 2006 av ​Mathieu Jacomy. Han byggde upp en prototyp, vilken kallades graphiltre, med visionen att skapa ett photoshop-liknande verktyg för grafer ​(Heymann, 2010)​.​Idag tillämpas verktyget för att bygga upp olika typer av nätverk

för visualisering av data. Syftet med verktyget är att hjälpa dataanalytiker att upptäcka och utforska mönster i den data de undersöker ​(“Features,” n.d.)​. För tillfället finns det fyra släppta versioner av Gephi och flera uppdateringar av de olika versionerna. Den senaste versionen av programmet är 0.9.2, vilken släpptes i september 2017 ​(“Releases: Gephi 0.9.2,” 2017)​.

Om tjänsten:

(29)

vilket dock kan variera något beroende på ens specifika datakapacitet ​(“Features,” n.d.)​. Information och flera olika egenskaper går att lagra i både noder och kanter. Det finns även flertalet olika tillhörande plugins och många av dessa är redan inkluderade vid nedladdning medan resterande enkelt går att installera till programvaran. Användare kan även utveckla egna plugins där det förvalda programmeringsspråket är java, men det går även bra att använda sig av andra JVM-programmeringsspråk, ​program som kan köra program som är skrivna i programmeringsspråket Java, ​(“Gephi Plugins,” 2019)​. De plugins som i dagsläget finns är indelade i följande kategorier: layout, tool, clustering, data laboratory, import, export, filter, generator, metric, preview, appearance och other category.

I programvaran går det att skapa interaktiva samt filtrerbara nätverk ​(“Quick Start,” n.d.)​. Ett exempel på ett nätverk skapat i Gephi återfinns i Figur 7. I programmet går det även att filtrera utifrån de egenskaper noder eller kanter givits. Noder och kanter kan också färgas hur som helst, exempelvis efter en viss egenskap noderna tilldelats. Däremot går det ej att söka efter en specifik nod i programmet.

För att skapa noder och kanter finns det flera olika tillvägagångssätt. Antingen kan dessa skapas manuellt i Gephi där noderna tilldelas id, namn samt egenskaper till skillnad från kanter som tilldelas id, källnod, målnod, typ av relation, vikt samt eventuella egenskaper. Ett annat alternativ är att importera datan för noder och kanter från exempelvis en excel-fil i CSV-format ​(“Quick Start,” 2010)​.

Ett av de export- plugins som finns och vanligtvis används är SigmaExporter. Med hjälp av denna plugin exporteras nätverket till en uppsättning filer som bildar en HTML5 interaktiv nätverksdisplay som kan köras i webbläsaren ​(“sigmaExporter,” 2016)​. I denna interaktiva visualisering (av det nätverk som skapats i Gephi) finns det möjlighet att söka på olika namn som noder tilldelats. Vid exporteringen till SigmaExporter går det även att välja ”group selector”. De olika grupperna i group selector kan sedan filtreras i det interaktiva verktyget i webbläsaren. Däremot finns det endast möjlighet att välja grupper utifrån en enskild

egenskap som noderna givits. Det går alltså inte både att välja grupp utifrån vilken panel som proteinerna tillhör och välja grupp utifrån vilka sjukdomar proteinerna är kopplade till. Dessutom får denna visualisering skapad av SigmaExporter ej användas för kommersiellt bruk ​(“Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0),” n.d.)​.

Det finns flera olika möjligheter för att utifrån det nätverk som skapats i programvaran Gephi bygga upp ett interaktivt nätverk som kan användas i en webbläsare. Det är vanligt att olika JavaScript-bibliotek används i detta syfte, antingen enskilt eller i kombination. Sigma.js (“OII Network Visualisation Example,” n.d.) samt jQuery ​(“Interactive Visualization,” n.d.)​ är två olika JavaScript bibliotek som frekvent används i syfte att bygga upp interaktiva

visualiseringar i kombination med nätverk från Gephi. I dessa fall bidrar

(30)

Egna reflektioner:

Gephi är ett verktyg med många fördelar. Det är gratis och går enkelt att ladda ned på egen hand. Det finns även många plugins som bland annat underlättar och bidrar till visualisering och export av nätverket. En som nämnts ovan är SigmaExporter, en plugin som vanligen tillämpas för att exportera det nätverk som skapats i Gephi och visualisera detta på ett interaktivt sätt på en hemsida. Denna plugin har dock brister och motsvarar inte alla de krav som Olink har. Dessutom får denna plugin inte användas för kommersiellt bruk. Däremot borde det inte vara en omöjlighet att antingen utgå från denna kod, alternativt använda sig av Sigma.js-biblioteket från grunden och på så sätt skapa en liknande men mer avancerad variant av denna redan existerande plugin. Det finns som sagt även flera andra JavaScript-bibliotek som används i kombination med Gephi och med hjälp av dessa finns det möjlighet att utveckla ett verktyg som passar Olinks krav. Dock är det värt att ha i åtanke att programmet inte har uppdaterats sedan 2017 vilket möjligen kan orsaka till problem i framtiden.

6.3.6 GraphStream

Figur 8. Visualisering skapad med GraphStream med exempelkod och data från GraphStream (“Graph Visualisation,” 2018). På bilden visualiseras vägnätverket i Le Havre.

Bakgrund:

(31)

de som är ansvariga för bibliotekens utveckling är Stefan Balev, Antoine Dutot, Yoann Pigné och Guilhelm Savin ​(“The GraphStream Team,” n.d.)​. Syftet med GraphStream är att

tillhandahålla ett sätt att visualisera dynamiska grafer ​(Dutot et al., 2007)​. För ett exempel av hur ett nätverk skapat med GraphStream skulle kunna se ut, se Figur 8.

Om tjänsten:

GraphStream är ett Java-bibliotek som används för att bygga interaktiva dynamiska visualiseringar för studier och simuleringar. Att den är dynamisk innebär att den utvecklas över tid beroende på om data läggs till eller tas bort. Även om grundidén bakom

GraphStream är att grafer förändras och utvecklas kontinuerligt ska det fungera väl för grafer där datan inte uppdateras lika ofta ​(Dutot et al., 2007)​. GraphStream består av tre

biblioteksmoduler: core, algo och ui ​(“Downloads,” n.d.)​ där core utgör basklassen, algo innehåller algoritmer såsom shortest path ​(“Getting Started,” n.d.)​ och ui inkluderar en mer avancerad viewer ​(“Graph Visualisation,” 2018)​, där en viewer är det som hanterar utseendet på nätverket ​(“CSS reference,” n.d.)​. Det ska gå att lagra vilken typ av data-attribut som helst i noderna ​(“Getting Started,” n.d.)​ och symboler kan läggas till symboler, så kallade Sprites, som kan visa information i graferna ​(“Graph Visualisation,” 2018)​.

Utseendemässigt går det med standardviewern att ändra färg och storlek på grafelementen samt att lägga till etiketter bredvid noderna. Det finns en automatisk layout över hur noderna placeras i nätverket där noder som sitter ihop med kanter attraherar varandra och noder i övrigt repellerar varandra. Med den avancerade viewern kan noder och kanter ges olika former, lägga till bilder och skuggor. Det går också att använda sig av ett style sheet, GraphStream CSS, som fungerar på samma sätt som CSS gör för HTML. Med denna kan andra layouter än den automatiska användas för hur noder placeras i ett nätverk. Den avancerade viewern behöver också användas för att lägga till interaktioner såsom

musklickningar eller för att kontrollera olika vyer i visualiseringen. Däremot kräver denna viewer god förståelse för Java Swing (“Graph Visualisation,” 2018) som är en av Javas grundklasser.

Det finns ett fåtal plugins för GraphStream ​(“GraphStream,” n.d.)​, exempelvis gs-gephi (​graphstream/gs-gephi​, 2019) som används för att importera nätverk från GraphStream till Gephi ​(Heymann, 2012)​. För att kunna lägga till ett nätverk från GraphStream på en hemsida kan också plugins användas, i detta fall GS-NetStream ​(“GraphStream: Interactive Web Application,” 2015)​. Dock är det oklart om detta är tillräckligt eller om det kräver ytterligare arbete för att integrera en visualisering på en hemsida.

GraphStream kan läsa in data från följande filformat ​(“Reading files using FileSource,” n.d.)​: - DGS (GraphStream) - DOT (GraphViz)

(32)

- NET (Pajek) - GraphML - GEXF (Gephi)

Det som anges inom parenteserna visar vilket visualiseringsverktyg respektive filformat kommer ifrån.

Sett till Olinks kriterier är det osäkert om alla är uppfyllda. Det verkar inte finnas någon inbyggd sökfunktion eller någon funktion för att filtrera vilken data som visas. Däremot går det att se datan ur olika vyer genom att zooma in eller ut i nätverket. GraphStream är gratis att använda eftersom det är tillgänglig under LGPL ​(“GraphStream,” n.d.)​ och Olink kommer själva kunna uppdatera verktyget i och med att de måste programmera det själva. Hur väl GraphStream presterar när det exporterar ett nätverk till en hemsida är väldigt oklart.

Egna reflektioner:

Osäkerheten kring många av Olinks kriterier ser vi som ett stort minus. Vi är osäkra på hur GraphStream fungerar med annoteringar, om det ens går att visa dem. Däremot går det att göra visualiseringar som vi tycker är enkla att förstå och som ser estetiska ut. För Olinks ändamål tror vi att det finns bättre visualiseringsverktyg att använda sig av än GraphStream.

6.3.7 GraphXR

(33)

Bakgrund:

GraphXR är ett visualiseringsverktyg som första gången lanserades i december 2018 av företaget Kineviz ​(Green, 2019a)​. Verktyget uppdateras ständigt och den senaste versionen, 2.5.0, släpptes 8 maj 2020 ​(“Version,” 2020)​. GraphXR är ett webbaserat verktyg som används för datavisualisering och analys inom flertalet olika branscher och områden,

däribland medicinsk forskning, rättsväsendet och business intelligence ​(“Kineviz GraphXR,” n.d.)​.

Om tjänsten:

Det finns tre olika alternativ att välja mellan gällande användning av programmet ​(“Pricing,” n.d.)​. Dessa tre är Explorer, Analyst och Enterprise. Alternativet Enterprise innebär att

företaget kan driva ett obegränsat antal projekt och det ingår även flera servicemöjligheter via både mail och telefon. Dessutom ingår en individanpassad utbildning för användning av verktyget. Priset för detta alternativ presenteras ej utan företaget (Olink) uppmanas att kontakta Kineviz. Däremot är versionen Explorer gratis och det finns en möjlighet att driva upp till tre projekt i denna version. Därmed kan alla verktygets funktioner och begränsningar testas utan att först betala något.

Gällande datalagring samt kapacitet är GraphXR ett webbaserat verktyg som körs i en webbläsare och därmed kommer ens egen data att fortsätta förvaras i ens egna databas och ej hos extern part ​(Green, 2019a)​. Det innebär även att verktyget kan uppdateras av Olink själva. Enligt Kineviz finns det möjlighet att lagra och visualisera mer än 100 000 noder i antingen 2D eller 3D ​(“Kineviz GraphXR,” n.d.)​. Verktyget kräver dessutom ingen egen programmering för att fungera.

Det går att skapa noder och kanter direkt i själva verktyget, alternativt importera data för noder från CSV-fil, SQL-databas, Maltego, Hunchly eller andra tredje parters APIs

(“GraphXR: User Guide,” 2019)​. Noderna kan delas in i olika, fritt valbara kategorier samt tilldelas flera olika egenskaper. Dessa kan anges i form av text, siffror, geospatiala

koordinater, tid eller datum. Egenskaper skulle därför i Olinks fall kunna representera en viss panel eller GO-term. Vid skapandet av länkar tilldelas även länken en relations-typ och det går även att tilldela länken flera egenskaper samt ändra färg på den. I Figur 9 visas ett exempel på ett nätverk som skapats i GraphXR där noderna delats in i olika kategorier som visas i det översta högra hörnet.

(34)

färgas då efter de olika värdena som de tilldelats för den valda egenskapen. Det innebär därmed att alla noder som tillhör en viss GO-term får samma färg. Nodernas färg är även något som går att anpassa och välja själv. Väljs sedan ett av dessa värden kommer alla noder som har det värdet för egenskapen att markeras. De noder som ej är markerade kommer inte att försvinna, men det finns en inställning som kallas fog density där det går att justera hur mycket de noder som ej är valda skall visas.

Angående den inbyggda filtreringsfunktionen är det endast möjligt att filtrera utifrån de egenskaper som tilldelats ett numeriskt värde, detta inkluderar även tid och datum (“GraphXR: User Guide,” 2019)​.​ Har vi exempelvis en egenskap som är årtal, är

egenskapens värde olika år. Det går då att filtrera så att endast de noder som tillhör ett visst år visas. Alternativt kan det ställas in så att de noder som är mellan, under eller över ett visst år visas.

Nätverk skapade i GraphXR går även att lägga upp på en hemsida. Det webbaserade

verktyget bäddas in med hjälp av en iframe ​(Green, 2019b)​. GraphXR fungerar dessutom bra att kombinera med andra verktyg och program så som Neo4j ​(Green, 2019a)​. Data kan till exempel importeras direkt från grafdatabasen Neo4j till GraphXR. Det finns även möjlighet att spara över data som skapats i GraphXR till en Neo4j-databas.

Egna reflektioner:

GraphXR uppfyller till stor del de krav Olink har på ett visualiseringsverktyg. Det är ett interaktivt verktyg där både sökfunktion och filtreringsfunktion finns. Det som däremot är okänt är priset för att använda detta verktyg. Eventuellt räcker det med att använda versionen Explorer men Olink bör kontakta GraphXR för att få mer information om detta.

Det kan även vara något svårt att förstå sig på hur alla funktioner fungerar och det skulle troligtvis behövas en guide för att kunder på ett enkelt och smidigt sätt skall kunna navigera i nätverket. Något som även verkar vara möjligt är att importera och addera data till ett nätverk som är integrerat på en hemsida. Därmed borde kunder kunna addera sin egen data till det ursprungliga nätverket. Dock skulle denna data sparas lokalt så endast kunden som laddade upp datan skulle se den.

För att underlätta visualiseringen skulle en idé kunna var att skapa olika kategorier av noder som till exempel panel, GO-term, protein och så vidare. I sådana fall kan länkar skapas mellan de olika panelerna och proteinerna samt mellan proteinerna och de olika

(35)

6.3.

​8 Neo4j

Figur 10.Figuren är skapad med exempeldata från Neo4j i Bloom (“Neo4j Bloom,” n.d.). På bilden syns ett antal noder med relationer mellan dem och har filtrerats enlig förhållandet “ACTED_IN” som syns på högra sidan. Ett exempel på information om en nod visas i rutan med titel “Tom Hanks”. Bakgrund:

Neo4j är ett svenskgrundat företag som erbjuder en grafdatabas, sparar data som en graf, samt flera funktioner och tjänster för att hjälpa företag hantera och förstå sin data ​(“Neo4j -

company,” n.d.)​, genom att till exempel visualisera den. Idag används Neo4j av många stora företag såsom google, ebay och AstraZeneca. De erbjuder onlineklasser som introduktion till användande av tjänsterna samt guider till hur användarna utför olika funktioner. Programmet används för att på ett snabbt och smidigt sätt skapa databaser och även visualisera dem vid behov.

Om tjänsten:

Tjänsterna erbjuds i flera format, det finns både gratisversioner och kommersiella licenser. För Olink skulle det bästa vara någon form av kommersiell licens för att få tillgång till samtliga tjänster samt support från företaget ​(“Neo4j Subscriptions,” n.d.)​. Detta kan variera mycket i kostnad, från några tusen dollar till hundra tusen dollar om året ​(“Neo4j Enterprise Commercial Prices,” 2018)​. Det finns både fördelar och nackdelar med att använda Neo4j för visualisering. Ett av verktyget som används för att visualisera data kallas Bloom, se Figur 10, som är både användarvänligt och interaktivt samt tillåter filtrering och sökfunktioner. Olink har även möjligheten till att reglera vem som ser vad av visualiseringen genom olika

(36)

detta kan vara GO-termer, relaterade paneler, sjukdomar eller eventuella länkar till mer information.

Vissa nackdelar finns också med tjänsten. För nuvarande går det inte att integrera tjänsten med en hemsida. För att kunder ska komma åt databasen med visualiseringsperspektiv behöver de en länk till en webbserver som de själva sätter upp genom Neo4j ​(“Neo4j Bloom User Interface Guide,” n.d.)​. Detta innebär att det inte går att visualisera direkt på hemsidan. Detta är dock något som är i utveckling, ett JavaScript program kallat Neovis.js är till för att lösa websidesintegrationsproblemet. Det är dock oklart till vilken utsträckning det är ett fokusområde ​(Lyon, 2016)​.

När det kommer till datalagring och kapacitet finns det ingen begränsning på mängden visualiseringsdata som ska lagras ​(“Neo4j Subscriptions,” n.d.)​. Efter kontakt med Neo4j ska det vara upp till Olink att sätta upp och anpassa den säkerhet de vill ha när det kommer till att lagra datan för visualiseringen. Visualiseringskapaciteten påverkas av hårdvaran och med rätt förutsättningar kan över 100 000 noder och kanter visualiseras samtidigt ​(Tandon, 2018)​. Neo4j erbjuder också hjälp i att beräkna den kapacitet som krävs av hårdvaran ​(“Hardware Sizing Calculator,” n.d.)​. Detta innebär att Olink har möjlighet att få en uppskattning av vad som krävs från deras sida för att visualisera till önskad kapacitet.

Det finns även möjligheten att kombinera Neo4j med andra program. Det verkar dock vara onödigt att använda Neo4j som en mellanhand eftersom Neo4j främst bidrar med databas och analysfunktioner medan själva visualiseringen kommer från den andra parten ​(“Graph

Visualization Tools,” n.d.)​. Slutligen erbjuds också kurser och seminarier i hur man använder och administrerar denna tjänst. Support finns även dygnet runt vid en kommersiell licens, vilket skulle krävas för att utnyttja denna tjänst ordentligt.

Egna reflektioner:

(37)

6.3.9 NetworkX

Figur 11. NetworkX kombinerat med Matplotlib, framställdes med hjälp av exempelkod från NetworkX GitHub (networkx/networkx, 2020).

Bakgrund:

NetworkX är ett Python-bibliotek som till en början skrevs av Aric Hagberg, Dan Schult och Pieter Swart ​(“Credits,” n.d.)​. Dessa tre personer lade grunden till NetworkX år 2004 och har sedan dess drivit utvecklingen framåt samt förbättrat verktyget med hjälp av ett flertal andra personer. Den senaste uppdateringen som utfördes gjordes den 17 oktober 2019. Syftet med verktyget är att få en bra struktur av datan vid visualisering av ett större nätverk. I många fall tillämpas NetworkX i kombination med andra bibliotek för att få en mer representabel visualisering över datan.

Om tjänsten:

(38)

Genom att enbart tillämpa NetworkX är det inte möjligt att visualisera data och därmed presenteras vissa lösningar på detta på deras egen sida på GitHub ​(“Install,” n.d.)​. Detta möjliggör för tillval av paket till verktyget för att öka funktionaliteterna. Några av dessa som nämns på deras sida är:

- Gdal - Pandas

- Lxml - PyGraphvis

- Matplotlib - PyYAML

- NumPy - SciPy

Av de nämnda tillvalen är Matplotlib mest av intresse eftersom det är ett bibliotek som kan göra visualiseringen i python interaktiv ​(“Matplotlib: Visualization with Python,” 2020)​. I hänvisad länk finns instruktioner hur noder och kanter skapas med NetworkX samt hur enklare grafer ritas​ ​med Matplotlib ​(“Creating a graph,” n.d.)​. Se Figur 11​ ​för ett test där dessa två kombinerades. Utöver de tillval som nämnts ovan finns även andra tillgängliga program eller bibliotek som kan användas för att få en bra visualisering, exempelvis Dash. På NetworkX GitHub finns även fler lite mer avancerade 3D-ritningar presenterade

(“Examples,” n.d.)​. JavaScript-kod finns även tillgängligt där för att producera en HTML-ritning ​(“Javascript,” n.d.)​.

Sett till Olinks krav på visualiseringsverktyget uppfyller NetworkX i sig inte alla krav men i kombination med andra tillval och bibliotek finns det potential att uppfylla kraven. I det här fallet finns det ett stort utbud av andra bibliotek samt möjligheten att kunna programmera själv, vilket innebär att om exempelvis sökbarheten är en del som saknas vid visualiseringen finns möjligheten att programmera på egen hand så att det kravet uppfylls. Detta innebär att NetworkX i kombination med annat bibliotek ger en bra grund att stå på vid visualisering av data. En annan aspekt som är fördelaktig är också att skaparen själv äger kontrollen över datan eftersom man vid tillämpning av NetworkX importerar ett bibliotek av funktioner, vilket innebär att informationen inte delas med en extern part. En ytterligare positiv del är att företaget själva kan uppdatera verktyget vid behov. En nackdel med NetworkX är att det inte enbart kan tillämpas för en bra visualisering utan behöver kombineras med andra verktyg för att uppfylla beställarens krav.

Egna reflektioner:

(39)

6.3.10 Sigma.js

Figur 12. En bild framställd från exempelkod tillgängligt i Sigma.js biblioteket (“Sigma.js - Version v1.2.1,” 2017). Bilden visar även en filterfunktion.

Bakgrund:

Sigma.js är ett JavaScript bibliotek som utvecklades och släpptes år 2014 av Alexis Jacomy med hjälp utav Guillaume Plique ​(“Sigma js,” n.d.)​. Den mest använda versionen just nu av Sigma.js släpptes 2017 men det finns också en ny version från 2019 som dock inte är helt stabil än ​(Jacomy, 2019)​. Biblioteket fokuserar på grafritning och att göra det enkelt att skapa interaktiva nätverk för webbapplikationer.

Om tjänsten:

Sigma.js är ett JavaScript open-source bibliotek under MIT-licens. Sigma.js kod och filer kan laddas ned direkt från GitHub där koden ligger öppet. För att använda Sigma.js krävs goda kunskaper i JavaScript och HTML. Datan hålls också privat eftersom Sigma.js är ett bibliotek som laddas ned till sin egna server. Visualiseringen och data kan uppdateras av företaget själva i den utsträckning som de vill.

(40)

möjligheten att framställa dem och interagera med graferna. Det är dock möjligt att bygga egna algoritmer/designer för graf-framställning men också möjligt att importera färdiga grafer från exempelvis Gephi, Cytoscape eller andra grafprogram ​(“Sigma js,” n.d.)​. Sigma.js kan hantera rådata direkt och producera en graf men kan också läsa in grafer från JSON eller GEXF format med hjälp av existerande plugins. Graferna kan framställas med Canvas eller webGL och fungerar med både touch och musrörelse ​(Jacomy, 2019)​.

Det finns många plugins och möjligheten att bygga egna sådana är stor. Dessa plugins ger möjligheten att anpassa verktyget. Med plugins och redan definierade funktioner finns

möjligheten att filtrera på olika teman, söka, lägga till annoteringar med mer. I ett av sigma.js egna exempel ​(“sigma.js/filters.html,” 2014)​ visar de ett exempel på två olika

filtreringsmöjligheter där det är möjligt att filtrera på kategorier och antal kanter, se Figur 12. Sigma är också anpassat för att hantera stora grafer vilket gör att det passar detta projekt. Vi har hittills inte funnit någon dokumentation på hur många noder och kanter biblioteket kan hantera men det finns andra webbsidor som visualiserar över 3000 noder med flera kanter som fungerar bra ​(“OII Network Visualisation Example,” n.d.)​. Sigma.js är inte i grunden ett biologiskt verktyg och det finns i dagsläget ingen färdig plugin för att exempelvis importera GO-termer. Det är däremot väldigt flexibelt och det går att skriva egna sådana plugins. Sigma.js ger möjligheten att anpassa utseendet på grafen såsom storlek på noder, färgning, klustring och liknande ​(“sigma.js/plugins,” 2018)​.

Egna reflektioner:

(41)

7. Vidare arbetsgång för Olink

(42)

8. Hur skapas ett etiskt försvarbart

visualiseringsverktyg?

Vid diskussion av visualiseringsverktyg är det inte alltid uppenbart vilka etiska dilemman som kan uppstå. Detta avsnitt är till för att ge vägledning och diskutera eventuella etiska aspekter för Olink att ha i åtanke när de utvecklar och tillämpar ett visualiseringsverktyg på deras databas. Vi tror inte det är särskilt svårt för Olink att skapa ett etiskt försvarbart visualiseringsverktyg så länge de har några punkter i åtanke som vi tänker presentera nedan.

8.1 Att visualisera information på ett opartiskt sätt

Ett av de främsta syftena med visualiseringsverktyget är att erbjuda information på ett enkelt och informativt sätt. Genom att låta kunder utforska både sin egen data samt vilken forskning som går att bedriva med Olinks produkter är det viktigt att diskutera vilken

informationspartiskhet som kan finnas. Olinks produktkatalog går att relatera till många olika sjukdomar och biologiska system och det är viktigt att dessa representeras på ett tydligt sätt i visualiseringen för att undvika eventuella misstolkningar.

Från ett samhällsnyttigt perspektiv är det viktigt att de ekonomiska intressena, alltså vilka sjukdomar som är mest lönsamma att forska kring eller sälja produkter för, inte framställs som mer relevanta vid visualiseringen. Detta jämfört med mindre lönsamma sjukdomar som kan vara minst lika viktiga att utforska. En konsekvens av detta skulle kunna vara att

sjukdomar som är vanligare inom fattigare regioner hamnar i skymundan på grund av lägre lönsamhet. Frågan som då kan uppstå är vad som är etiskt rätt sett till samhällets nytta och vad Olink bör ta för ansvar i dessa sammanhang.

8.2 Hur presenteras ny data utan att förvränga visualiseringen

En annan aspekt att fundera kring är hur ny data ska presenteras. Både från ett

samhällsperspektiv och ett affärsperspektiv finns det flera aspekter att fundera kring så fort ny data ska adderas till visualiseringen. Ju snabbare ny information publiceras till

allmänheten desto snabbare kan också ny forskning bedrivas baserat på den nya

(43)

Det finns även baksidor med att presentera ny data snabbt, framförallt när det gäller

information om sjukdomar och andra system i människokroppen. Det är Olinks skyldighet att all data som visualiseras är korrekt, både som en skyldighet till samhället, men även mot sig själva då det också är fråga om den egna trovärdigheten. Från ett kundperspektiv, till exempel forskare, kan det finnas flera konsekvenser av att data presenteras på ett felaktigt sätt kring den produktkatalog som Olink erbjuder. Både tid och pengar är viktiga resurser som kan slösas bort på felaktig information om det inte kontrolleras ordentligt.

8.3 Hur ska Olink gå tillväga?

Olink har själva uttryckt några mål för visualiseringsverktyget som kan sammanfattas till ett verktyg som bidrar med snabbare, tydligare och billigare resultat inom medicinsk forskning. Om verktyget presenterar samtliga data på ett tydligt och opartiskt sätt, ser till att ny data är ordentligt kontrollerad och anpassad till den befintliga datan. Men även har i åtanke att sjukdomar i fattigare regioner inte hamnar i skymundan så kommer deras

(44)

9. Författarnas tack

Under detta projekt har flera individer utanför vår projektgrupp bidragit med kunskap, reflektion och återkopplingar på vårt arbete. Vi vill därför tacka nedanstående personer för deras bidrag.

Henning Henschel​ har varit vår beställarrepresentant under projektets gång. Han har bidragit

med relevant och givande återkoppling samt sett till att vår kontakt med Olink fungerat på ett bra sätt.

Fredrik Pettersson​ har varit vår handledare för projektet. Han har stöttat gruppen under

arbetets gång samt bidragit till diskussioner som rört gruppens sammanhållning och

arbetssätt. Detta har medfört att vårt projekt samt vårt samarbete utvecklats i positiv riktning under projektets gång.

Hilda Andersson​ från Olink har dagligen varit tillgänglig på mejl för att besvara både stora

och små frågor som gruppen haft kring projektbeställningen, projektet samt den etiska

analysen. Hilda närvarade även vid vårt halvtidsmöte där vi presenterade de verktyg vi hittills utforskat. Hon bidrog då med återkoppling på det vi presenterade samt information kring vad vi skulle fokusera på vid fortsatt informationssök.

Olink Proteomics​ har gett oss ett givande samt intressant projekt att genomföra. Vi vill även

tacka de som tog sig tid att närvara vid studiebesöket som bidrog till mycket ny kunskap och klarhet kring projektbeställningen samt projektet i helhet.

Jessica Nihlén Fahlquist​ höll en inspirerande etikföreläsning för oss. Vi hade även ett möte

med Jessica då hon bidrog med flertalet tankar och idéer rörande etiska aspekter för just vårt projekt. Detta var till stor hjälp vid formulerandet av vår etiska analys.

Lena Henriksson​ har sett till att vi har haft möjlighet att bedriva detta projekt. Dessutom har

hon koordinerat och styrt upp olika föreläsningar som alla berört relevanta ämnen för projektet. Hon har även besvarat diverse olika frågor under projektets gång.

Lennart Köhler​ har under projektets gång bidragit med intresseväckande föreläsningar

gällande presentationsteknik, rapportskrivning samt skapande av poster. Dessa föreläsningar har gett oss kunskap som vi har haft nytta av under stora delar av projektet.

Elisabeth Sköld​ höll i flera föreläsningar och diskussioner rörande projektmetodik. Detta gav

(45)

Opponentgrupp​ samt ​tvärgrupperna​ har bidragit med mycket värdefull återkoppling på

(46)

10. Bidragsberättelse

Alla författare har tillsammans genomfört en projektplanering inför arbetet och I.W., G.A. och L.B. presenterade den muntligt. Posterpresentationen utfördes av R.B. och

slutredovisningen utfördes av V.S., F.F. och A.L.

Under litteraturstudien och följande rapportskrivning har alla medlemmar bidragit till att korrekturläsa och diskutera samtliga delar av materialet i rapporten. Rapporten är skriven av alla medlemmar där:

G.A. har skrivit de delar som innefattar D3.js, avsnitt 6.3.4. G.A. skapade D3.js demo, se Bilaga 12.4, samt analysen i 5.2.2 med L.B.

L.B. har skrivit de delar som innefattar Cytoscape.js och Sigma.js som behandlas i avsnitt 6.3.2 respektive 6.3.10 samt analysen i avsnitt 5.2.2 tillsammans med G.A. Har också bidragit med rapportens struktur tillsammans med F.F.

R.B. har skrivit de delar som innefattar Gephi samt GraphXR. Dessa delar behandlas i avsnitt 5.2.6 och 6.3.5 respektive avsnitt 5.2.1 och 6.3.7.

F.F. har skrivit de delar som innefattar NetworkX, avsnitt 5.2.4 och 6.3.9, även bidragit generell brödtext till respektive avsnitt och strukturen i rapporten tillsammans med L.B. Figur 1 och Figur 2 samt skrivit etikanalysen i avsnitt 7 tillsammans med V.S.

A.L. har skrivit de delar som innefattar Dash och GraphStream vilka behandlas i avsnitt 5.2.4 och 6.3.3 respektive 5.2.7 och 6.3.6.

V.S. har skrivit de delar som rör Neo4j, detta innefattar avsnitt 5.2.5. och avsnitt 6.3.8. V.S. har även bidragit till att skriva etikanalysen i avsnitt 7 tillsammans med F.F.

I.W. har skrivit de delar som rör Cytoscape, vilket är avsnitt 5.2.3 och 6.3.1.

References

Related documents

Vår studie visar att det både finns likheter och skillnader i hur lärare formulerar sina tankar kring elevers olika sätt att lära, hur lärare anser att de gör

Flera av informanterna berättar även att de utsatts för bristande kunskap, både av elever och lärare, när de gått i en klass som inte anpassar sig efter personer

Denna uppsats undersöker hur det går till när organisationer tar fram sina strategier för sociala medier och hur dessa växer sig in i, och anpassas efter organisationen i fråga..

Vidare var syftet att undersöka hur pedagoger kan arbeta för att barn ska få verktyg för att kunna göra ett medvetet och meningsfullt förlåt, för att barn inte bara ska säga

Holgersson och Höök beskriver tre former av ledarutvecklingsprogram vars syfte är att öka andelen kvinnliga chefer: chefsutbildning, mentorprogram och nätverk. Mentorprogram är en

Som tidigare har nämnts menar Nikolajeva att kvinnor förväntas vara vackra vilket vi även kan finna hos de manliga karaktärer som främst beskrivs ha kvinnliga

Med det i fokus så betyder det att sjuksköterskan har en betydande roll, inte bara för att föräldrar ska ta makten över situationen utan även att familjen skall kunna

Processen riktade enbart in sig på data vilket gjorde att andra delar av prototypen blev lidande däribland utformningen av de delar som inte hade riktlinjer vilket går att se