Giter Site home page Giter Site logo

crowd-airway-bsc-2018's Introduction

Crowd Airway BSc project 2018

The matlab scripts used in this project are listed below.

Required to run in this particular order:

  • viewAndProcessResults.m - Retrieves the initial datasets to work with.
  • findSubjectsWithCF.m - Generates subjectIDandStatus which contains the ID's and status of the subjects who's airways were used for annotation.
  • filterUsefullResults.m - Filters the data, generated by viewAndProcessResults.m, based on the criteria described in the paper. Returns the filtered versions of the input tables of this file and some additional columns.

Required to run in order to perform the analyses:

  • separatingTasks.m - Creates an cell which contains specific information of each image of the dataset. The rows indicate the image of the dataset. The rows of images without useable annotations will be empty.
  • selectFilteredTasksBasedOnCFStatus.m - Creates a cell which contains the subject ID, status and list of tasks of that subject. These task only include the annotations that satisfied the filtering criteria.
  • selectAllTasksBasedOnCFStatus.m - Is similar to 'selectFilteredTasksBasedOnCFStatus.m' the output only differs by the fact that the lists of tasks include ALL annotations generated by knowledge workers.

Analyses of the data:

  • mape.m - calculates the mean absolute percentage error of each image slice. These MAPEs per image slice are visualized in a individual box per subject. The first 12 boxes are of subjects without CF, the last 12 boxes are of subjects with CF.
  • scatterplotInnervsOuterAnnotation.m - Creates a scatterplot of the inner area vs. outer area annotations of the KWs. Each dot is an individual annotation result. It also creates the same scatterplot for the expert's measurements, this contains less points because each image is only described by one person.
  • scatterplotPerImage.m - Creates a scatter plot of expert-vs-KW for both airway lumen and airway wall. The annotations of the KWs are median combined. So, each image is one scatter point.
  • wapSubject.m - Tests difference in mean wall area percentage between CF subjects and healthy subjects. One WAP per subject is calculated. So, means were calculated over the crowd annotations and over the images of one subject.
  • boxplotGeneral.m - This script indicates the measurements of the crowd annotations per image slice. Each box represents one image slice. This script can be runned for one of the two airway areas of a specific individual subject, but notice that the input should be the index of the subject ID.

Remainder scripts -not used, however these could be informative:

  • otherScatterExKW.m - Creates a scatter plot expert-vs-KW of specific images. The inner area and outer area of the corresponding image are shown in the same color.
  • otherScatterInOut.m - Creates a scatter plot inner-vs-outer area of specific images. The annotations of the same image slice are shown in the same color.
  • relativeDifferencesLargestandSmallest.m - Script finds the largest and smallest airway of each subject and returns the number of useable annotations of those image slices. The part of relative differences was under construction.

Functions used in 'viewAndProcessResults.m':

  • classifyAnnotation.m
  • ellipse.m
  • radiusExtraction.m
  • measureEllipses.m
  • getPath.m
  • parse_json.m

crowd-airway-bsc-2018's People

Contributors

mereleussen avatar vcheplygina avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

crowd-airway-bsc-2018's Issues

Naar github verwijzen in verslag

De laatste versie van alle bestanden heb ik naar github gepusht. Nu wilde ik iets over github toevoegen aan het verslag, maar ik bedenk mij net dat dit een prive pagina is. Is het dan niet raar als ik een link of screenshot toevoeg, terwijl dit niet voor iedereen toegankelijk is?

Merging master branch

image

De twee regels die in de mail stonden heb ik ingevoerd en hij geeft aan dat ze al up to date zijn, maar er is niks aan mijn bestanden veranderd. Moet ik nog een regel code toevoegen?
Bovendien had ik wel al zelf aan een bestand gewerkt, maar die heb ik ook nog even extern opgeslagen, zodat ik die in de nieuwe versie zal invoegen. Zou dit soms problemen opleveren?

Define problem

Create an initial problem definition that captures your understanding of the thesis’ goals.

  • description of problem
  • research question / approach to a solution
  • rough schedule (milestones/subtasks, timeline)

Gitter

  • Iedereen uitnodigen voor Gitter
  • Private room aanmaken

Meerdere boxplots in een figuur

In separatingTasks.m probeer ik van iedere (ofja eerst een aantal) task een boxplot met de inner area in een figuur te zetten, maar ik krijg het niet voor mekaar.
Als error geeft hij aan dat het komt doordat hetgeen dat ik probeer te plotten niet gelijk is qua grootte. Bijv task 1 met 9 areas en task 2 met 11 areas. Hoe kan ik dit oplossen of is kan ik beter boxplot dan achterwege laten?

Als dat opgelost zou kunnen worden heb ik nog een vraag. Ik wil niet iedere keer handmatig moeten invullen welke tasks hij moet boxplotten. Dus wilde dat doen door een lijst te maken met de tasks die hij moet plotten. Maar hierbij verschilt natuurlijk iedere keer die lengte van de lijst. Is er een manier dat boxplot hiermee om kan gaan of is dit te dynamisch?

Nog bedankt voor de info op de wiki!

Tasks verdelen over CF en niet-CF

Zoals vanmiddag besproken wil ik de tasks die bij CF-patienten horen in een lijst zetten en de tasks van niet-CF-patienten in een andere lijst. Uit de code die ik had geschreven bleek dat er 499 tasks zijn van mensen zonder CF en 1295 tasks van patienten met CF.
In totaal bestaan er 2380 tasks, dus logisch leek dat het restant aan tasks kwam doordat die geen bruikbare annotaties bevatten. Dit is nu gecheckt met isempty (in numberUselessTasks.m'), maar daaruit blijkt dat dat er 405 zijn.
Dit geeft dus 2380-499-1295-405= 181 tasks die op dit moment 'mysterieus verdwenen' zijn.

Ik dacht dat dit zou komen doordat in 'selectTasksBasedOnCFStatus.m' ik previouspatient variabelen gebruik. Deze zouden ervoor moeten zorgen dat iedere tasks maar een keer in de lijst wordt toegevoegd ondanks de meerdere annotaties waaruit filterDataTable bestaat. Maar wellicht zou dit conflicten geven als opeenvolgende tasks van dezelfde patient zouden zijn, dus bijv. task 1 patient 24, task 2 patient 41, task 3 patient 41. Dan zouden task 2 en 3 niet als losse tasks kunnen worden gezien omdat ze van dezelfde patient zijn. Dit heb ik voor de eerste 100 tasks nagekeken handmatig, maar daar is niet zo'n geval te vinden, waardoor het mij onwaarschijnlijk lijkt dat er dan toch 181 van zulke gevallen over de hele data zullen zijn.

Op dit moment denk ik dat de fout zit in de forloops van regel 23 in combinatie met die previouspatient (selectTasksBasedOnCFStatus.m ). Zou jij hiernaar willen kijken of het logisch is wat ik doe, want op dit moment weet ik niet wat nog opties zijn.
Als ik nog iets moet toelichten hoor ik het wel!

Input over resultaten

Op dit moment heb ik verschillende methoden geprobeerd om meer inzicht te krijgen of er een verschil zit tussen CF en niet CF subjects. Maar ik heb het gevoel dat ik een beetje ontspoord ben en niet meer voor ogen heb wat nu interessant is om te weten en wat niet.

Ik wilde een bestandje toevoegen met daarin wat uitleg en resultaten van wat ik nu gedaan heb, maar dat lukt hierin niet, dus ik ga hem aan mn github toevoegen.
Wil jij hier naar kijken en wat feedback / jou gedachtes hierover geven?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.