\documentclass[10pt,a4paper]{article} \usepackage[dutch]{babel} \usepackage[utf8]{inputenc} \usepackage{amsmath,hyperref,graphicx,booktabs,float} % Link colors \hypersetup{colorlinks=true,linkcolor=black,urlcolor=blue} % Paragraph indentation \setlength{\parindent}{0pt} \setlength{\parskip}{1.5ex plus 0.5ex minus 0.2ex} \title{Projectvoorstel\\Universal Visualization Appliance} \author{\begin{tabular}{ll} Naam: & Taddeüs Kroes\\ Collegekaartnummer: & 6054129\\ E-mailadres: & \texttt{taddeus.kroes@student.uva.nl}\\ Adres: & Wethouder van Wijckstraat 40, 1107 BR Amsterdam\\ Telefoonnummer: & 06-23437025\\ Begeleider: & Dr. R.G. Belleman (UvA)\\ \end{tabular}} \begin{document} \maketitle \pagebreak \tableofcontents \pagebreak \section{Introductie} \subsection{Probleemidentificatie} \label{sec:probleemidentificatie} % Ruwe probleemstelling Data wordt verzameld in alle hoeken van de wetenschap. Wanneer de data echter zijn verzameld, is het vaak een uitdaging om deze op een zodanige manier weer te geven dat er een waarneming kan worden gedaan. Deze visualisatie wordt veelal gedaan met de hulp van een visualisatie-specialist, omdat het voor de wetenschapper vaak zelf niet eenvoudig is om dit te realiseren. % Aanleiding Robert Belleman\footnote{\url{http://staff.science.uva.nl/~robbel/}} is een specialist op het gebied van visualisatie op de Universiteit van Amsterdam (UvA), en deed de observatie dat bij gelijksoortige datasets de visualisatiemethode overeenkomstig is. % Ruwe doel Dit roept de vraag op of de visualisatiemethode kan worden bepaald door een computerprogramma dat de data analyseert, en op basis van die analyse een visualisatiemethode kiest. Dit zou werk uit handen nemen van de visualisatie-specialist, en de mogelijkheid geven voor wetenschappers om hun eigen data snel te kunnen bekijken. Om deze reden is dit project als afstudeerproject voor de bachelor Informatica beschikbaar gesteld. % Setting/afbakening De afstudeeropdracht is om de basis te leggen voor een computerprogramma dat op lange termijn zoveel mogelijk soorten data kan analyseren en visualiseren. Het is de bedoeling van de onderzoekers dat het programma zodanig modulair wordt opgezet, dat er in de loop van de tijd meer modules op kunnen worden aangesloten voor nieuwe analyse- en visualisatiemethodes. Vanwege de beschikbare tijd om het onderzoek uit te voeren is besloten dat het resulterende programma een ``Proof of Concept'' moet zijn. Er is besloten dat het Proof of Concept 3D datasets moet kunnen visualiseren in interactie met een multi-touch tafel. Deze is beschikbaar gesteld voor dit onderzoek door de UvA. \subsection{Opbouw verslag} In hoofdstuk \ref{sec:vraagstelling} wordt de probleemstelling vertaald naar een doelstelling en een centrale vraagstelling. Hoofdstuk \ref{sec:deelvragen} verdeelt de centrale vraagstelling in een aantal deelvragen, die elk kort worden toegelicht. Na de vraagstelling wordt in hoofdstuk \ref{sec:afbakening} de afbakening van het onderzoeksgebied aangegeven. Vervolgens wordt de gebruikte onderzoeksmethodiek beschreven in hoofdstuk \ref{sec:methodiek}, bestaande uit een faseverdeling en een globale tijdsplanning. Tot slot wordt in hoofdstuk \ref{sec:gerelateerd} een blik geworpen op een gerelateerd project. \section{Vraagstelling} \label{sec:vraagstelling} \subsection{Doelstelling} Het doel van dit onderzoek is om een bijdrage te leveren aan het ontwikkelen van een universeel datavisualisatie-programma. In dit projectvoorstel zal naar het programma worden verwezen met de naam ``UVA'' (Universal Visualizaton Appliance). \subsection{Centrale vraag} Hoe kan een Proof of Concept voor een universeel datavisualisatie-programma worden gerealiseerd, gericht op 3D-visualisatie en met multi-touch interactie? \subsection{Deelvragen} \label{sec:deelvragen} \begin{itemize} \item \emph{Welke taal (en evt. framework) zijn de beste keuze om het programma in te ontwikkelen?} Het kiezen van een taal is vooral afhankelijk van de beschikbaarheid van zgn. ``libraries'' met multi-touch ondersteuning. Voor Python\footnote{\url{http://python.org}} bestaat bijvoorbeeld het applicatieframework Kivy\footnote{\url{http://kivy.org}}. \item \emph{Hoe werkt de communicatie met de multi-touch tafel?} Het is nodig om te weten wat voor ``events'' er worden ondersteund door frameworks als Kivy, om te bepalen welke touch-gebaren kunnen worden geïmplementeerd. \item \emph{Welke soorten 3D datasets zijn er en welke daarvan zijn relevant om te ondersteunen in het Proof of Concept?} De term ``3D dataset'' is een generieke benaming. Omdat de multi-touch tafel in het bezit van de UvA is, zal het onderzoek zich in eerste instantie richten op bestandsformaten die op de UvA worden gebruikt om de kans op daadwerkelijk gebruik van het programma te vergroten. \item \emph{Hoe kunnen de verschillende 3D datasets worden gevisualiseerd?} Is het bijvoorbeeld makkelijk om OpenGL commando's te gebruiken? En wanneer er vele duizenden vectoren zijn, is het dan nuttig om bijvoorbeeld clusters van vectoren te groeperen tot een enkele vector? \item \emph{Hoe kunnen multi-touch gebaren worden gebruikt in de interactie met 3D datasets?} Er moet een intuïtieve manier worden ontwikkeld voor de interactie met 3D data op een 2D scherm. \item \emph{Wat is een goede structuur die toestaat om in de toekomst nieuwe visualisatiemethodes toe te voegen?} Een universeel programma moet flexibel zijn zodat ontwikkelaars gemakkelijk nieuwe methodes kunnen toevoegen. Een voorbeeld van een al bestaand is Eclipse. Elk component van Eclipse wordt gezien is een ``plugin''. Zo'n plugin heeft een vast formaat waardoor het kan worden gebruikt in combinatie met andere plugins. Een soortgelijke structuur is wellicht nuttig om te hanteren in het UVA-programma. De structuur moet flexibel genoeg zijn om een verschillende frameworks te kunnen gebruiken in verschillende visualisatiemethodes. Kivy maakt bijvoorbeeld gebruik van een eigen main loop (een functie die zorgt voor het functioneren van de grafische interface). De loop is ``blocking'', dus is het mogelijk nodig om gebruik te maken van threads voor continue taken. \end{itemize} \subsection{Afbakening} \label{sec:afbakening} Het onderzoek zou waarschijnlijk het best tot zijn recht komen wanneer het zou worden uitgevoerd door meerdere onderzoekers. Omdat er echter slechts een enkele onderzoeker is, en er een beperkte tijd voor het onderzoek beschikbaar is, is besloten tot het maken van een Proof of Concept. %Omdat het UVA-programma expliciet als opdracht is geformuleerd, wordt in dit %onderzoek aangenomen dat er nog geen universeel programma voor %datavisualisatie bestaat. \section{Onderzoeksmethodiek} \label{sec:methodiek} \subsection{Methode} Het UVA-programma is een nieuw soort programma, er is nog geen bestaande variant van. Dit onderzoek maakt daarom gebruik van een experimentele onderzoeksmethode\footnote{\url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/}}: tijdens de ontwikkeling van het programma wordt geëxperimenteerd met de beschikbare opties voor implementatie, en wordt bepaald in hoeverre deze opties voldoen aan de vooraf gestelde eisen. \subsection{Fases} Het onderzoek kan worden verdeeld in vier hoofdfases: \subsubsection*{Oriëntatiefase} De eerste fase is de oriëntatie op het werken met de multi-touch interface, en op het weergeven van voorbeeld-datasets in 3D (gebruik makend van de OpenGL- bindings\footnote{\url{http://kivy.org/docs/api-kivy.graphics.opengl.html}} in Kivy). Er moet bijvoorbeeld worden uitgezocht welke touch-gebaren worden herkend. Dit kan worden getest met behulp van een testprogramma dat een bericht toont op het moment dat een event optreedt. Ook is het nuttig om een testprogramma te maken dat met behulp van de eerder genoemde OpenGL-bindings een 3D plot maakt van een voorbeeld-dataset, om bekend te worden met de OpenGL functionaliteit. Daarnaast moet worden bepaald welke soorten 3D data gaan worden gebruikt, en hoe het formaat hiervan eruit ziet. \subsubsection*{Ontwerpfase} Met de kennis die is opgedaan tijdens de oriëntatiefase kan een ontwerp worden gemaakt van het kerncomponent van het programma, en de aansluiting hiervan op de 3D/multi-touch visualisatiecomponenten. \subsubsection*{Implementatiefase} Deze fase bevat het daadwerkelijk programmeren van de ontworpen onderdelen. Tijdens deze fase zullen ook ontwerpproblemen op een gedetailleerd niveau worden opgelost. Denk aan het invullen van de grafische interface met knoppen en eventuele widgets. \subsubsection*{Verslaglegging} Het is de bedoeling dat al tijdens de eerste drie fases wordt gewerkt aan de basis van de afstudeerscriptie. Tijdens die fases kunnen een aantal deelvragen worden beantwoord. Er zal een logboek worden bijgehouden in de vorm van Version Control. Het gebruikte Version Control systeem is Git\footnote{\url{http://git-scm.com/}}. Bij de ``commits'' worden ``commit messages'' ingevuld zodat zichtbaar is op welk moment (in welke commit) bepaalde taken zijn uitgevoerd. Tijdens de laatste fase worden de antwoorden op de deelvragen waar nodig aangevuld, en worden de overige hoofdstukken geschreven. \subsection{Tijdsplanning} De planning volgens BlackBoard\footnote{\url{https://blackboard.uva.nl/webapps/login/}} bevat acht weken voor de eerste drie fases, en drie weken voor het schrijven van de afstudeerscriptie. De globale tijdsindeling voor de verschillende fases is: \begin{table}[H] \begin{tabular}{ll} week 12-13 & Oriëntatiefase \\ week 14 & Ontwerpfase \\ week 15-18 & Implementatiefase \\ week 19-21 & Verslaglegging \\ \end{tabular} \end{table} \section{Relatie met vergelijkbaar onderzoek} \label{sec:gerelateerd} Er is gezocht naar programma's met een soortgelijke strekking met het doel er inspiratie uit op te doen, zo is het programma ``UDAV'' gevonden. UDAV\footnote{\url{http://udav.sourceforge.net/}} is een programma waarmee data op verschillende manieren kan worden gevisualiseerd met behulp van MathGL\footnote{\url{http://mathgl.sourceforge.net/}}. Om dit programma te kunnen gebruiken is kennis nodig van de MathGL syntax, waar het UVA-programma juist als eigenschap heeft dat er weinig kennis nodig is van de gebruiker. Het zou echter wel een optie zijn om visualisatiemogelijkheden in de MathGL library onder te brengen in een module voor het UVA-programma. \section{Referenties} \begin{itemize} \item Homepage Robert Belleman \url{http://staff.science.uva.nl/~robbel/} \item Python homepage \url{http://python.org} \item Definitie experimentele onderzoeksmethode \url{http://artikelen.foobie.nl/verslagen-scripties/onderzoeksmethode-samenvatting/} \item Kivy homepage \url{http://kivy.org} \item Kivy OpenGL-bindings documentatie \url{http://kivy.org/docs/api-kivy.graphics.opengl.html} \item Git homepage \url{http://git-scm.com/} \item UDAV homepage \url{http://udav.sourceforge.net/} \item MathGL homepage \url{http://mathgl.sourceforge.net/} \end{itemize} \end{document}