CTK-Hackfest-May-2013: Difference between revisions

From Commontk
Jump to navigationJump to search
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== Event pictures ==
== Event pictures ==
Images from the hackfest
Images from the hackfest
<gallery widths=300 px heights=200px perrow=3>
<gallery widths=300 px heights=200px perrow=3>
Line 5: Line 6:
File:2013-05-20_16.16.28.jpg|<big>Discussions on Monday</big>
File:2013-05-20_16.16.28.jpg|<big>Discussions on Monday</big>
File:2013-05-21_11.33.58.jpg|<big>Planning on Tuesday</big>
File:2013-05-21_11.33.58.jpg|<big>Planning on Tuesday</big>
</gallery>
Social programs
<gallery widths=150 px heights=100px perrow=4>
File:Hackfest2013_AtGabors1.jpg|Dinner at Gabor's house
File:Hackfest2013_AtGabors2.jpg
File:Hackfest2013_bbq1.jpg|BBQ with the PerkLab
File:Hackfest2013_bbq2.jpg
File:Hackfest2013_bbq3.jpg
File:Hackfest2013_PerkLabAndCtkGroup1.jpg|Group picture with the PerkLab
File:Hackfest2013_PerkLabAndCtkGroup2.jpg
File:Poutine.jpg|[http://en.wikipedia.org/wiki/Poutine Poutine for lunch!]
</gallery>
</gallery>


Line 109: Line 123:


==== DICOM Application Hosting ====
==== DICOM Application Hosting ====
* Interoperability testing of CTK with other Application Hosting code
* Results:
* Results:
** Slicer as Hosted Application (Ivo, Lawrence, Steve)
** Merged DAH branch into master
** Slicer as Hosted Application (Ivo, Lawrence, Steve) [https://github.com/pieper/SlicerDICOMHosting]
*** launch hosted app, send data
*** launch hosted app, send data
*** loaded into slicer for manipulation
*** loaded into slicer for manipulation
*** changed data detected automatically
*** changed data detected automatically
*** TODO: data sent back to host
*** TODO: data sent back to host
*** TODO: act on bringToFront events (includes resizing)
** pushed corresponding CTK-based MITK hosted/host application
** Started to develop integration tests
* Plans
* Plans
** finish data return to host by end of next hackfest ;)
** finish data return to host by end of next hackfest ;)
** Interoperability testing of CTK with other Application Hosting code
** Lawrence to test CTK code against the XIP hosting implementation
** Testing framework to be continued


==== DICOM Database and Networking ====
==== DICOM Database and Networking ====
Line 141: Line 161:
** New Layout control for ctkDICOMBrowser to replace tree and ctkDICOMModel
** New Layout control for ctkDICOMBrowser to replace tree and ctkDICOMModel
** New signals to match use cases
** New signals to match use cases
** New signals for ctkDICOMDatabase during imports and new dialog in app widget to show summary results
* Plans
* Plans
** issue #336 - create replacement for ctkDICOMAppWidget and deprecate old (Marco)
** issue #336 - create replacement for ctkDICOMAppWidget and deprecate old (Marco)
Line 147: Line 168:
** issue #332 - ctkDICOMTableManager to control layouts (also Andreas)
** issue #332 - ctkDICOMTableManager to control layouts (also Andreas)
** issue #276 - fix up RT use cases (Andras and Csaba)
** issue #276 - fix up RT use cases (Andras and Csaba)
** Review naming View vs. Widget
** Look into re-using  http://www.commontk.org/index.php/File:CtkSearchBox3.png
** Marco is making ctkDICOM2


==== Widgets ====
==== Widgets ====
Line 154: Line 178:
* Qt5 Compatibility?
* Qt5 Compatibility?
** <del>Working on VTK / Qt5 compatibility</del> - {{done}} VTK6 topic : http://review.source.kitware.com/#/t/2803
** <del>Working on VTK / Qt5 compatibility</del> - {{done}} VTK6 topic : http://review.source.kitware.com/#/t/2803
* Results
** Miklos and Julien developed plan for resolving spin box features: there will be a ctkDoubleSpinBox with new precision features migrated from current ctkSpinBox and Miklos's changes to expose more of the QSpinBox features.
** Jc was Qt5+VTK6 issues and plans to backport them to VTK5.10


==== Tests Framework ====
==== Tests Framework ====
Line 169: Line 197:
** track the exact version of libraries and stack traces (platform specific)  Look into google crashpad.
** track the exact version of libraries and stack traces (platform specific)  Look into google crashpad.
** Review squish video: http://www.froglogic.com/squish/gui-testing/squish-qt-webinar-qanda.php
** Review squish video: http://www.froglogic.com/squish/gui-testing/squish-qt-webinar-qanda.php
* Results & Plans
** CREATIS group attended hangout and plans to contribute to QtTesting


==== Build Systems & Software process ====
==== Build Systems & Software process ====
Line 177: Line 208:
* <del>Finalize work related to qRestAPI project (pending since Bologna hackfest)</del> {{done}} History cleaned and pushed: https://github.com/commontk/qRestAPI
* <del>Finalize work related to qRestAPI project (pending since Bologna hackfest)</del> {{done}} History cleaned and pushed: https://github.com/commontk/qRestAPI
* Results
* Results
** Windows build issues identified for PythonQt on windows vs 2010/2012
** Fixed and tested the DCMTK build issues
** Windows build issues identified for PythonQt on windows vs 2010/2012 (include order of std vector header)
** Still some more issues, likely also to do with include order


==== Command Line Modules ====
==== Command Line Modules ====
Line 185: Line 218:
** keep the CLI simple.
** keep the CLI simple.
** xinclude to allow people to centralize their grant support and other boilerplate info
** xinclude to allow people to centralize their grant support and other boilerplate info
* Results
** Xenios and Sascha performed tests and discussed many options
*** Explored C++ tools for generating the CLI XML on the fly
*** Lots of ideas and Xenios has some TODO items and he will push to a fork for review.
==== qRestAPI and XNAT API ====
* Results
** Sascha and Florian built on Miklos's work from last hackfest
** Many C++ level accessors are now available in a rough application
** Can login to XNAT, list projects, lists subjects in project
** Florian and Sascha contacted Tim Olsen and Dan Marcus to work through some questions on the REST API of XNAT
* Plans
** Work will continue and people will stay in touch.
** Now there is a CTK library outside the plugin framework
** New widgets and models reflecting status
** The XNAT group expressed enthusiasm to work with CTK
** INRIA is researching and evaluating XNAT to see if it will fill needs
** Maxime is in contact with the CVI (cardiovascular) group associated with the XNAT developers (http://cvrgrid.org/featured/xnat-cvi)
** DKFZ is likely to deploy XNAT instances unless there are unforeseen roadblocks
*** Want to take advantage of distributed project sharing
*** Pushing from PACS into common space
** BWH also has internal XNAT implementations with several years worth of prostate biopsy databases.


== Agenda ==
== Agenda ==
Line 232: Line 289:
<gallery widths=300 px heights=200px perrow=3>
<gallery widths=300 px heights=200px perrow=3>
File:Screen Shot 2013-05-24 at 10.23.16 AM.png |<big>Slicer running as DICOM Hosted Application using CTK infrastructure</big>
File:Screen Shot 2013-05-24 at 10.23.16 AM.png |<big>Slicer running as DICOM Hosted Application using CTK infrastructure</big>
Image:MITKasHostedApp-and-asHost-withCLIasHostedApp.jpg|For comparison image from Bologna Hackfest: MITK running as DICOM Application Hosting hosted application (hosted by ctkDICOMHost) as well as hosting system with CTK-CLI as hosted application
File:Screen Shot 2013-05-24 at 11.27.52 AM.png |<big>Summary dialog after DICOM import shown in use in slicer.  Uses new signals from ctkDICOMDatabase and the signal tracking in ctkDICOMAppWidget</big>
File:TableView_Horizontal_Sorting.png |<big>New DICOMWidgets with horizontal orientation. The ctkDICOMTableView uses the QSqlQueryModel to display the database content</big>
File:TableView_Vertical_Sorting.png |<big>New DICOMWidgets with vertical orientation.</big>


</gallery>
</gallery>

Latest revision as of 18:28, 3 June 2013

Home < CTK-Hackfest-May-2013

Event pictures

Images from the hackfest

Social programs

Introduction

Date: May 20-24, 2013

Location: Kingston, Ontario, Canada. In a classroom at Queens University.

Goal: A follow on to the wildly successful previous hackfests!

Requirements: Attendees must be willing to spend their time during the event writing ctk code that contributes to the main ctk roadmap. This means spending the week immersed in C++, Qt, DCMTK, CMake, and related technologies. People who do not feel qualified for this task are politely not invited :)

Group size: Maximum 20 participants so we can have a manageable working meeting. The organizing committee will invite and select participants based on input from TheTeam.

Site Hosts: Gabor Fichtinger, Csaba Pinter, Andras Lasso

Organizing Committee: Ivo Wolf, Stephen Aylward, Steve Pieper

Future Events: Future hackfests will be announced in advance, and we hope lots of people will be interested in participating. The venue and activities at future hackfests will be determined based on the number of active participants in the project. We welcome participation via the CTK email lists, the source code repository, and this website.

Attendees

  • So far we have received confirmation for the following people (in no particular order).


Please fill in your intentions in terms of common accommodation.

Participants
Name Organization
Steve Pieper Isomics, Inc., Cambridge, MA, USA
Ivo Wolf Hochschule Mannheim
Marco Nolden German Cancer Research Center (DKFZ)
Sascha Zelzer German Cancer Research Center (DKFZ)
Andreas Fetzer German Cancer Research Center (DKFZ)
Florian Vichot INRIA
Lawrence Tarbox Washington University, St. Louis
Andras Lasso Queen's University, Kingston, ON
Csaba Pinter Queen's University, Kingston, ON
Alberto Biancardi The University of Sheffield, UK
Xenios Papademetris Yale University US
Google Hangout Participants
Name Organization
Jean-Christophe Fillion-Robin Kitware Inc.


Note Note: There were also other invitations sent to active people on the community, and people who recently showed interest. When their intent will be known they will be added to the list.

Preparation

Developers should bring a laptop with the current CTK source code downloaded and built.

Use the CTK developers mailing list to discuss build issues and topics for ongoing work.

Phone conferences have been scheduled in the weeks leading to the event:

  • To be announced

Topics and Projects

DICOM Application Hosting

  • Results:
    • Merged DAH branch into master
    • Slicer as Hosted Application (Ivo, Lawrence, Steve) [1]
      • launch hosted app, send data
      • loaded into slicer for manipulation
      • changed data detected automatically
      • TODO: data sent back to host
      • TODO: act on bringToFront events (includes resizing)
    • pushed corresponding CTK-based MITK hosted/host application
    • Started to develop integration tests
  • Plans
    • finish data return to host by end of next hackfest ;)
    • Interoperability testing of CTK with other Application Hosting code
    • Lawrence to test CTK code against the XIP hosting implementation
    • Testing framework to be continued

DICOM Database and Networking

  • Review implementation issues when using CTK DICOM
    • DICOM issues in github [2]
    • Incorrect import when DICOMDIR is present [3]. Should we skip DICOMDIR when it is not picked explicitly? Yes check.png
    • Incorrect/slow database behavior when multiple processes access it simultaneously [4] (interference between ctkDICOMIndexer and ctkDICOMModel)
  • Discuss DICOM-RT for CTK
  • Discuss DICOM Export options
    • CLI outputs converted into real DICOM
    • RT and other non-imaging types
      • GUI Issues
      • Lower-level dcmrt issues, possible use of DKFZ toolkit
      • Use of various tools (VTK, ITK, Plastimatch), validation
  • Results
    • New DB table of display overrides
    • New table view of patient/study/series - ctkDICOMTableView
    • New Layout control for ctkDICOMBrowser to replace tree and ctkDICOMModel
    • New signals to match use cases
    • New signals for ctkDICOMDatabase during imports and new dialog in app widget to show summary results
  • Plans
    • issue #336 - create replacement for ctkDICOMAppWidget and deprecate old (Marco)
    • issue #337 - implement signals from table view (Marco and Andras with Steve)
    • issue #331 - to be completed soon by Andreas
    • issue #332 - ctkDICOMTableManager to control layouts (also Andreas)
    • issue #276 - fix up RT use cases (Andras and Csaba)
    • Review naming View vs. Widget
    • Look into re-using http://www.commontk.org/index.php/File:CtkSearchBox3.png
    • Marco is making ctkDICOM2

Widgets

  • Results
    • Miklos and Julien developed plan for resolving spin box features: there will be a ctkDoubleSpinBox with new precision features migrated from current ctkSpinBox and Miklos's changes to expose more of the QSpinBox features.
    • Jc was Qt5+VTK6 issues and plans to backport them to VTK5.10

Tests Framework

  • Qt testing framework
    • Checkpoint verification
    • Possibly help debugging when a test is failing and fixing a test
  • Check log for warnings and errors
  • Integrate with Error Log widget and the app launcher (but won't work on mac)
  • Suggest as something for student at CREATIS
    • Rotating log files
    • capturing screen during test to help diagnose failures
    • capturing all output to log files and flushing
    • report crash utility for user to send all files to file issue
    • auto-detect crashes using some kind of token
    • track the exact version of libraries and stack traces (platform specific) Look into google crashpad.
    • Review squish video: http://www.froglogic.com/squish/gui-testing/squish-qt-webinar-qanda.php
  • Results & Plans
    • CREATIS group attended hangout and plans to contribute to QtTesting

Build Systems & Software process

  • DCMTK build issues [6] [7] Yes check.png Fixed by 74b4b07b9
  • A drop-in CMake module allowing to easily setup Superbuild project.
    • Consolidate CTK, Slicer, .. approach
  • Collection of "External_XXX.cmake" file that could easily be re-used ? (See https://github.com/BRAINSia/NAMICExternalProjects)
  • Finalize work related to qRestAPI project (pending since Bologna hackfest) Yes check.png History cleaned and pushed: https://github.com/commontk/qRestAPI
  • Results
    • Fixed and tested the DCMTK build issues
    • Windows build issues identified for PythonQt on windows vs 2010/2012 (include order of std vector header)
    • Still some more issues, likely also to do with include order

Command Line Modules

  • Results
    • Xenios and Sascha performed tests and discussed many options
      • Explored C++ tools for generating the CLI XML on the fly
      • Lots of ideas and Xenios has some TODO items and he will push to a fork for review.

qRestAPI and XNAT API

  • Results
    • Sascha and Florian built on Miklos's work from last hackfest
    • Many C++ level accessors are now available in a rough application
    • Can login to XNAT, list projects, lists subjects in project
    • Florian and Sascha contacted Tim Olsen and Dan Marcus to work through some questions on the REST API of XNAT
  • Plans
    • Work will continue and people will stay in touch.
    • Now there is a CTK library outside the plugin framework
    • New widgets and models reflecting status
    • The XNAT group expressed enthusiasm to work with CTK
    • INRIA is researching and evaluating XNAT to see if it will fill needs
    • Maxime is in contact with the CVI (cardiovascular) group associated with the XNAT developers (http://cvrgrid.org/featured/xnat-cvi)
    • DKFZ is likely to deploy XNAT instances unless there are unforeseen roadblocks
      • Want to take advantage of distributed project sharing
      • Pushing from PACS into common space
    • BWH also has internal XNAT implementations with several years worth of prostate biopsy databases.

Agenda

Monday

Opening discussion

  • Review topics and projects
  • Plans for the week

Evening: BBQ at the Fichtinger residence

Tuesday

During the day: hack, hack, hack...

Evening: Dinner and beers at the Kingston Brewery

Wednesday

During the day: hack, hack, hack... 10:30 Hangout to review status

Evening: Kingston Haunted Walks

Thursday

During the day: hack, hack, hack...

Evening: BBQ by the gazebo on the waterfront

Friday

During the day: hack, hack, hack...

Late morning; Closing discussion

https://plus.google.com/hangouts/_/33c4f3b6fd88ee2330172c2c91439632c7d6e9b6?authuser=0&hl=en

Afternoon: hack or travel

Gallery of Results

Images from the hackfest

Travel & Hotel

Local contact

Need any help in organizing your visit, contact Andras Lasso (lasso@cs.queensu.ca). If you have any troubles during your visit, call TBD.

Airport

  • Option A: Fly into Kingston via Toronto
  • Option B: Fly into Toronto, take a bus to Kingston
    • Recommended: Coach Canada direct bus from Toronto Airport to Kingston, leaves twice a day: 2.30pm and 7pm. You can buy the ticket from a Kiosk at the airport or buy online
    • Megabus from Toronto downtown: get to the Toronto Coach Terminal, take a bus to Kingston, leaves in about every hour. Online reservation is strongly recommended, as early as possible, because the prices are continuously increasing (starts from $1 and increased to about $40).

Transportation on Site

Take a cab at the Kingston airport or bus terminal to your hotel. After that everything is in walking distance.

Lodging

Be aware there is a Queen's event during the week of the hackfest so try to book your hotel early

Meeting Location

Queen's University, Kinesiology building, room #107.

Weather

Can be still chilly in May, average temperature is about 15°C.

Food

Plan on having breakfast at your hotel before the meeting. A variety of lunch options will be available, as will access to snacks and beverages during the day. Please email the organizers if you have any allergies or dietary restrictions.

Optional Activities in the Area