CTK-Hackfest-Nov-2014: Difference between revisions

From Commontk
Jump to navigationJump to search
 
(33 intermediate revisions by 9 users not shown)
Line 1: Line 1:
== Event pictures ==
== Event pictures ==


[[File:Ctk.2014,11.png|600px]]


=== Progress ===
=== Progress ===
Line 47: Line 48:
|-
|-
|Andreas Fetzer
|Andreas Fetzer
|German Cancer Research Center, Heidelberg, Germany
|-
|Stefan Kislinkiy
|German Cancer Research Center, Heidelberg, Germany
|-
|Ralf Floca
|German Cancer Research Center, Heidelberg, Germany
|German Cancer Research Center, Heidelberg, Germany
|-
|-
Line 127: Line 134:


* Qt5 migration (Christian)
* Qt5 migration (Christian)
* Packaging / install support (Marco)
** compile and run on Mac
* Packaging / install support (Marco, Jc)
* Fix issue related to [https://github.com/commontk/Artichoke Artichoke] and improve documentation (Jc)
* Dashboard
* Dashboard
** General Situation: Continuous/Nightly clients, coverage
** General Situation: Continuous/Nightly clients, coverage
** Configurations: Qt4, Qt5, etc.
** Configurations: Qt4, Qt5, etc.
** Travis CI (Sascha, Steve)
** Travis CI (Sascha, Steve)
* Incomplete doxygen on the website (Christian)
* Component / target oriented build system (Jc, Sascha)
* Review commontk/* repositories (delete/update/etc.)
* Check support for MacOS 10.10


==== DICOM ====
==== DICOM ====


* Multi-frame support (Steve, Christian, Michael)
* dcmtk Features
** Support building with emscripten, pinnacle
** Multi-frame support (Steve, Christian, Michael)
** SEG support
*** Investigate compatibility of DCMTK seg functionality with BrainLab segmentations; [http://slicer.kitware.com/midas3/item/162562 sample dataset] (QIICR community, Steve has access) - RLE compressed
*** Investigate DCMTK RLE compression tools applied to segmentations; trying to apply it to sample objects generates "F: No conversion to transfer syntax RLE Lossless possible!" error; [http://slicer.kitware.com/midas3/item/162428 SPL segmentation dataset example], [http://slicer.kitware.com/midas3/item/161740 PET segmentation example]
 
* Making CLIs read and write valid DICOM (Steve, Michael)
* Making CLIs read and write valid DICOM (Steve, Michael)
* Anonymization (Andreas Fetzer, Marco, Steve, Stefan)
 
* Anonymization (Andreas Fetzer, Marco, Steve, Stefan, Ralf)
** Client-side options: gdcmanon, dcmtk (?), dcmjs, DicomCleaner, CTP...
** Client-side options: gdcmanon, dcmtk (?), dcmjs, DicomCleaner, CTP...
** Testing can use [[File:PieperMRI.tar.gz | this freely sharable identified MR scan]]
** Goal is to de-identify with various tools and compare results with [ftp://medical.nema.org/medical/dicom/Final/sup142_ft.pdf supplement 142 of the DICOM standard].
** There is a separate page, which provides an overview of existing de-identification tools: [[DICOM de-identification tool overview]]
* ctkDICOM improvments (Ralf); discussed ideas:
** Introduce "compact and detailed view mode" to ctkDICOMTableView and ctkDICOMTableManager. Basic idea is that you can give the widgets a list of "high priority" tags -> in compact mode all columns of non priority tags will be filter. You can define the active mode via property / slot (to e.g. easily connect it with a control widget signal).
** Refactoring of one unified "search definition widget" and separated generators for "dicom q/r" and sql statement that use the search definition. This would give the possibility for instance to use the same search widget in different places (e.g. in the ctkDICOMQueryRetrieveWidget or ctkDICOMTableManager)


==== XNAT ====
==== XNAT ====


* Improve and extend the XNAT API (Sascha Zelzer, Miklos Espak)
* Improve and extend the XNAT API (Sascha Zelzer, Miklos Espak, Ralf)
** Data editing
** Python Wrapping (Sascha, Nicolas)
** Caching
** Data editing (post-poned)
** Filtered data query based on data type and/or properties
** Uploading (Andreas, Ivo)
** Launch pipelines (remote) and follow progress
** Caching (Miklos, (Ralf))
** C++ VS XNAT data model (Nicolas, Andreas)
** Filtered data query based on data type and/or properties (Miklos)
** Launch pipelines (remote) and follow progress (Miklos)


==== CLI ====
==== CLI ====


* Make it customisable what options to generate to the final command (Gergely Zombori)
* Make it customisable what options to generate to the final command (Gergely Zombori)
* Finalize integration of CTK CLI frontend into Slicer and investigate how to integrate the backend (Jc)
* Improved entry point / documentation for CLI users & developers


==== ?? ====
==== Documentation & Presentation ====


=== Planned Discussions ===
* Nice landing page?
* Possible extensions of CTK to the IGT domain
* Improve wiki? Something different?
** OpenIGT link
** ...
* QIICR Presentation
==== ... ====


== Agenda ==
== Agenda ==


==== Monday ====
==== Monday ====
Start: The meeting room will be open starting at 9am. Official start and kick-off will be early afternoon after everybody arrived.


Opening discussion
Opening discussion
Line 169: Line 199:
* Plans for the week
* Plans for the week
* Review [https://github.com/commontk/CTK/issues?state=open open issues on github].
* Review [https://github.com/commontk/CTK/issues?state=open open issues on github].
Afternoon:
* Welcome by Prof. Hans-Peter Meinzer
* Presentation about [[Media:The_Common_Toolkit_Jubilee.pptx|The Common Toolkit Jubilee]]


Evening:
Evening:
* Dinner 20:15 @ [http://www.heidelberger-kulturbrauerei.de/en/ Kulturbrauerei], [https://www.google.de/maps/dir/Hotel+Holl%C3%A4nder+Hof,+Neckarstaden+66,+69117+Heidelberg/Kulturbrauerei+Heidelberg,+Leyergasse+6,+69117+Heidelberg/@49.413196,8.7102803,18z/data=!3m1!4b1!4m14!4m13!1m5!1m1!1s0x4797c10638e496a5:0xe28b6a91325a2c23!2m2!1d8.709242!2d49.413192!1m5!1m1!1s0x4797c1a81df9996d:0xb0cec22d395e79e1!2m2!1d8.713414!2d49.41318!3e2 directions], Pickup ~20:00 at Holländer Hof


==== Tuesday ====
==== Tuesday ====


During the day: hack, hack, hack...
Morning:
 
* Steve QIICR
* Michael Onken presentation about upcoming dcmtk modules
* XNAT discussion
 
 
Afternoon:
* 13:30 [[CTK-Hackfest-Nov-2014/LabTour|Lab Tour]]


Evening:
Evening:
* 16:00 Famous Old City tour guided by Hans-Peter Meinzer
* 20:00 Beer Topics
** Defacing


==== Wednesday ====
==== Wednesday ====
Morning


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


16:00 Famous Old City tour guided by Hans-Peter Meinzer
==== Thursday ====
 
Morning:
 
* IGT & OpenIGTLink discussion
 
During the day: hack, hack, hack…
 
Short wrap-up:
 
Christian:
* Fixed Qt5 DICOM & Plugin Framework issues
* Doxygen fixes
* Started integrating CTK DICOM Widget improvements
 
JC:
* dcmjs: Update to use latest version of emscripten
* dcmjs: create dcmjs.org github project and add deploy mechanism
* dcmjs: Improve user experience of http://dcmjs.org website
* Re-started Slicer CTK CLI integration
* Discussed extension of CLI schema to support optional parameter.
* Improved CTK PythonQt wrapping to support import from regular python shell. See [https://github.com/commontk/CTK/pull/520 commontk/CTK#520]
 
Hans:
* Many discussion topics (Chronicle, CLI)
* CLI documentation overview (CTK Wiki)
* Investigated elasticsearch database for CLI modules
* OpenInventor <-> VTK integration
 
Stefan:
* Added [[Media:Testmr.txt | mapping/de-identification]] functionality to dcmjs (minimal feature set like CTP)
 
Steve:
* dcmjs organize tool
** exploring boundaries (extracting data etc.)
** anonymization
* DICOM segmentation object discussions
** How to support CLIs?
 
Michael:
* Compiled CTK with new dcmtk snapshot (worked)
* Worked on dcmseg module
 
Marco:
* Discussions about QIICR
* Closed a couple of GitHub issues


==== Thursday ====
Ivo:
* Discussions about QIICR, XNAT
* Compiling MRML outside of Slicer
 
Andreas:
* XNAT upload (qRestAPI changes)
* DICOM discussions (widget usability, anonymization tools)
 
Nicolas:
* Wrapped XNAT library into Python (for usage in NiPype)
* Usage outside of a QApplication needs investigation
 
Gergely:
* Added possibility for optional CLI parameter
 
Miklos:
* Started XNAT query API
* Hit API limits -> focus on caching objects
* Needs more discussion
 
Sascha:
* Qt5 fixes
* Travis integration


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


Evening:  
Evening:


==== Friday ====
==== Friday ====
Line 195: Line 313:


11:00: Closing discussion
11:00: Closing discussion
* CLI Elasticsearch (Hans)
** Search for keywords and get matching CLIs
** Use it to browse CLI descriptions and clean-up contents
** [https://github.com/commontk/cli-indexer commontk/cli-indexer] repository. Creates JSON descriptions from CLI XML.
** Every institution could publish the JSON description of their CLIs and publish it
** There is a pypi package for cli-indexer


Afternoon: hack or travel
Afternoon: hack or travel
Line 203: Line 327:


* Marco Nolden (m.nolden@dkfz-heidelberg.de)
* Marco Nolden (m.nolden@dkfz-heidelberg.de)
* Sascha Zelzer (s.zelzer@dkfz-heidelberg.de)
* Sascha Zelzer (s.zelzer@dkfz-heidelberg.de) [[File:Sascha_phone.png|130px]]
* Andreas Fetzer (a.fetzer@dkfz-heidelberg.de)
* Andreas Fetzer (a.fetzer@dkfz-heidelberg.de)


Line 210: Line 334:
It takes about an hour from Frankfurt Airport (FRA) to Heidelberg Main Station with one change in Mannheim. If you stay in the Old Town you can also look for connections going to "Heidelberg Altstadt". You can look it up at [http://www.bahn.de/p_en/view/index.shtml Deutsche Bahn], but they run quite frequently.
It takes about an hour from Frankfurt Airport (FRA) to Heidelberg Main Station with one change in Mannheim. If you stay in the Old Town you can also look for connections going to "Heidelberg Altstadt". You can look it up at [http://www.bahn.de/p_en/view/index.shtml Deutsche Bahn], but they run quite frequently.


'''Local:''' from the Old Town, "Universitätsplatz", runs bus number 32 via Main Station to DKFZ, exit at "Chirurgische Klinik", bus direction is "Neuenheim". After you exit, DKFZ is on your right.
'''Local:''' from the Old Town, "Universitätsplatz", runs [http://www.vrn.de/mam/vrn/einfach-ankommen/dokumente/stadtlinienplaene/heidelberg_schematisch.pdf bus number 32] ([http://www.vrn.de/mam/vrn/einfach-ankommen/dokumente/stadtlinienplaene/heidelberg.pdf geographic map]) via Main Station to DKFZ, exit at "Chirurgische Klinik", bus direction is "Neuenheim". After you exit, DKFZ is on your right.
 
[[File:Heidelberg_map.png|700px]]


During the day the bus runs every 10 minutes in both directions, timetables are also available at [http://fahrplanauskunft.vrn.de/vrn/XSLT_TRIP_REQUEST2?language=en VRN].
During the day the bus runs every 10 minutes in both directions, timetables are also available at [http://fahrplanauskunft.vrn.de/vrn/XSLT_TRIP_REQUEST2?language=en VRN].
==== To Frankfurt Airport ====
The German Railways is affected by a strike from Thursday to Monday morning. Trains will operate on a limited basis - check the website of [http://www.bahn.de Deutsch Bahn].
You may also use a [http://www.transcontinental-group.com/en/airport-shuttle-buchen Shuttle Bus] departing from the Crown Plaza in Heidelberg. It is recommended to book online as early as possible.


===Lodging===
===Lodging===
Line 218: Line 350:
We recommend to stay in the historic Old Town. There is an easy direct bus ride every 10 minutes from there to DKFZ.
We recommend to stay in the historic Old Town. There is an easy direct bus ride every 10 minutes from there to DKFZ.


We have reserved a number of rooms at the [http://www.hollaender-hof.de/en/ Holländer Hof] hotel! Please use "CTK 2014" when you do a reservation there. Of course there are plenty of other hotels in that area, e.g. [http://www.hotel-goldener-hecht.de/ Goldener Hecht] or the oldest house in town, [http://www.ritter-heidelberg.de/ Hotel zum Ritter].
We have reserved a number of rooms at the [http://www.hollaender-hof.de/en/ Holländer Hof] ([http://www.openstreetmap.org/?mlat=49.41317&mlon=8.70925#map=19/49.41317/8.70925 map]) hotel! Please use "CTK 2014" when you do a reservation there. Of course there are plenty of other hotels in that area, e.g. [http://www.hotel-goldener-hecht.de/ Goldener Hecht] or the oldest house in town, [http://www.ritter-heidelberg.de/ Hotel zum Ritter].
 
===Meeting Room===
 
The full address for the DKFZ is
 
Deutsches Krebsforschungszentrum
Im Neuenheimer Feld 280
69120 Heidelberg
 
We will meet in the main building on the second floor (European counting!). The cryptic room number is D0.02.032. Follow the description below to find it.
 
When leaving bus 32, you will see something similar to
 
[[File:DKFZ_Bus.jpg|600px]]
 
The large building on the right is the DKFZ main bulding
 
[[File:DKFZ_Hauptgebaeude_neu_600x402.jpg|600px]]
 
Walk through the main entrance and follow the map
 
[[File:DKFZ_Hackfest_map.jpg|600px]]
 
Ask the nice guys at the reception or call us in case of any problems.


===Weather===
===Weather===

Latest revision as of 10:53, 17 November 2014

Home < CTK-Hackfest-Nov-2014

Event pictures

Ctk.2014,11.png

Progress

Introduction

Date: November 3-7, 2014

Location:

German Cancer Research Center, Heidelberg, Germany

More details to follow.

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: Marco Nolden, Sascha Zelzer, Ivo Wolf

Organizing Committee: Steve Pieper, Ivo Wolf, Stephen Aylward

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
Marco Nolden German Cancer Research Center, Heidelberg, Germany
Sascha Zelzer German Cancer Research Center, Heidelberg, Germany
Andreas Fetzer German Cancer Research Center, Heidelberg, Germany
Stefan Kislinkiy German Cancer Research Center, Heidelberg, Germany
Ralf Floca German Cancer Research Center, Heidelberg, Germany
Ivo Wolf Mannheim University of Applied Sciences, Germany
Steve Pieper Isomics, Inc., USA
Michael Onken Open Connections GmbH / OFFIS
Jean-Christophe Fillion-Robin Kitware, Inc., USA
Miklos Espak University College London, UK
Nicolas Toussaint University College London, UK
Gergely Zombori University College London, UK
Christian Askeland SINTEF Medical Technology, Trondheim, Norway
Stefan Baumann Basel, Switzerland
Hans Meine Fraunhofer MEVIS, Germany
Google Hangout Participants
Name Organization Availablity (Central European Time)


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:

https://plus.google.com/hangouts/_/g3vi3lz7sycalj74ys2xpnpr3ya

Topics and Projects

Consider reading Contributing_to_CTK#Integrate_your_new_feature

Reminder: when integrating branches, remember to use --log --no-ff when merging.

We plan to have concrete hacking topics as well as dedicated discussions in smaller groups. People are encouraged to show their interest in a particular subject by adding their name to the list below.

Hacking Topics

Infrastructure

  • Qt5 migration (Christian)
    • compile and run on Mac
  • Packaging / install support (Marco, Jc)
  • Fix issue related to Artichoke and improve documentation (Jc)
  • Dashboard
    • General Situation: Continuous/Nightly clients, coverage
    • Configurations: Qt4, Qt5, etc.
    • Travis CI (Sascha, Steve)
  • Incomplete doxygen on the website (Christian)
  • Component / target oriented build system (Jc, Sascha)
  • Review commontk/* repositories (delete/update/etc.)
  • Check support for MacOS 10.10

DICOM

  • dcmtk Features
    • Support building with emscripten, pinnacle
    • Multi-frame support (Steve, Christian, Michael)
    • SEG support
      • Investigate compatibility of DCMTK seg functionality with BrainLab segmentations; sample dataset (QIICR community, Steve has access) - RLE compressed
      • Investigate DCMTK RLE compression tools applied to segmentations; trying to apply it to sample objects generates "F: No conversion to transfer syntax RLE Lossless possible!" error; SPL segmentation dataset example, PET segmentation example
  • Making CLIs read and write valid DICOM (Steve, Michael)
  • ctkDICOM improvments (Ralf); discussed ideas:
    • Introduce "compact and detailed view mode" to ctkDICOMTableView and ctkDICOMTableManager. Basic idea is that you can give the widgets a list of "high priority" tags -> in compact mode all columns of non priority tags will be filter. You can define the active mode via property / slot (to e.g. easily connect it with a control widget signal).
    • Refactoring of one unified "search definition widget" and separated generators for "dicom q/r" and sql statement that use the search definition. This would give the possibility for instance to use the same search widget in different places (e.g. in the ctkDICOMQueryRetrieveWidget or ctkDICOMTableManager)

XNAT

  • Improve and extend the XNAT API (Sascha Zelzer, Miklos Espak, Ralf)
    • Python Wrapping (Sascha, Nicolas)
    • Data editing (post-poned)
    • Uploading (Andreas, Ivo)
    • Caching (Miklos, (Ralf))
    • C++ VS XNAT data model (Nicolas, Andreas)
    • Filtered data query based on data type and/or properties (Miklos)
    • Launch pipelines (remote) and follow progress (Miklos)

CLI

  • Make it customisable what options to generate to the final command (Gergely Zombori)
  • Finalize integration of CTK CLI frontend into Slicer and investigate how to integrate the backend (Jc)
  • Improved entry point / documentation for CLI users & developers

Documentation & Presentation

  • Nice landing page?
  • Improve wiki? Something different?

Agenda

Monday

Start: The meeting room will be open starting at 9am. Official start and kick-off will be early afternoon after everybody arrived.

Opening discussion

Afternoon:

Evening:

Tuesday

Morning:

  • Steve QIICR
  • Michael Onken presentation about upcoming dcmtk modules
  • XNAT discussion


Afternoon:

Evening:

  • 16:00 Famous Old City tour guided by Hans-Peter Meinzer
  • 20:00 Beer Topics
    • Defacing

Wednesday

Morning

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

Thursday

Morning:

  • IGT & OpenIGTLink discussion

During the day: hack, hack, hack…

Short wrap-up:

Christian:

  • Fixed Qt5 DICOM & Plugin Framework issues
  • Doxygen fixes
  • Started integrating CTK DICOM Widget improvements

JC:

  • dcmjs: Update to use latest version of emscripten
  • dcmjs: create dcmjs.org github project and add deploy mechanism
  • dcmjs: Improve user experience of http://dcmjs.org website
  • Re-started Slicer CTK CLI integration
  • Discussed extension of CLI schema to support optional parameter.
  • Improved CTK PythonQt wrapping to support import from regular python shell. See commontk/CTK#520

Hans:

  • Many discussion topics (Chronicle, CLI)
  • CLI documentation overview (CTK Wiki)
  • Investigated elasticsearch database for CLI modules
  • OpenInventor <-> VTK integration

Stefan:

Steve:

  • dcmjs organize tool
    • exploring boundaries (extracting data etc.)
    • anonymization
  • DICOM segmentation object discussions
    • How to support CLIs?

Michael:

  • Compiled CTK with new dcmtk snapshot (worked)
  • Worked on dcmseg module

Marco:

  • Discussions about QIICR
  • Closed a couple of GitHub issues

Ivo:

  • Discussions about QIICR, XNAT
  • Compiling MRML outside of Slicer

Andreas:

  • XNAT upload (qRestAPI changes)
  • DICOM discussions (widget usability, anonymization tools)

Nicolas:

  • Wrapped XNAT library into Python (for usage in NiPype)
  • Usage outside of a QApplication needs investigation

Gergely:

  • Added possibility for optional CLI parameter

Miklos:

  • Started XNAT query API
  • Hit API limits -> focus on caching objects
  • Needs more discussion

Sascha:

  • Qt5 fixes
  • Travis integration


Evening:

Friday

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

11:00: Closing discussion

  • CLI Elasticsearch (Hans)
    • Search for keywords and get matching CLIs
    • Use it to browse CLI descriptions and clean-up contents
    • commontk/cli-indexer repository. Creates JSON descriptions from CLI XML.
    • Every institution could publish the JSON description of their CLIs and publish it
    • There is a pypi package for cli-indexer

Afternoon: hack or travel

Travel & Hotel

Local contacts

  • Marco Nolden (m.nolden@dkfz-heidelberg.de)
  • Sascha Zelzer (s.zelzer@dkfz-heidelberg.de) Sascha phone.png
  • Andreas Fetzer (a.fetzer@dkfz-heidelberg.de)

Transportation

It takes about an hour from Frankfurt Airport (FRA) to Heidelberg Main Station with one change in Mannheim. If you stay in the Old Town you can also look for connections going to "Heidelberg Altstadt". You can look it up at Deutsche Bahn, but they run quite frequently.

Local: from the Old Town, "Universitätsplatz", runs bus number 32 (geographic map) via Main Station to DKFZ, exit at "Chirurgische Klinik", bus direction is "Neuenheim". After you exit, DKFZ is on your right.

Heidelberg map.png

During the day the bus runs every 10 minutes in both directions, timetables are also available at VRN.

To Frankfurt Airport

The German Railways is affected by a strike from Thursday to Monday morning. Trains will operate on a limited basis - check the website of Deutsch Bahn.

You may also use a Shuttle Bus departing from the Crown Plaza in Heidelberg. It is recommended to book online as early as possible.

Lodging

We recommend to stay in the historic Old Town. There is an easy direct bus ride every 10 minutes from there to DKFZ.

We have reserved a number of rooms at the Holländer Hof (map) hotel! Please use "CTK 2014" when you do a reservation there. Of course there are plenty of other hotels in that area, e.g. Goldener Hecht or the oldest house in town, Hotel zum Ritter.

Meeting Room

The full address for the DKFZ is

Deutsches Krebsforschungszentrum
Im Neuenheimer Feld 280
69120 Heidelberg

We will meet in the main building on the second floor (European counting!). The cryptic room number is D0.02.032. Follow the description below to find it.

When leaving bus 32, you will see something similar to

DKFZ Bus.jpg

The large building on the right is the DKFZ main bulding

DKFZ Hauptgebaeude neu 600x402.jpg

Walk through the main entrance and follow the map

DKFZ Hackfest map.jpg

Ask the nice guys at the reception or call us in case of any problems.

Weather

November is a rather wet month. Average weather in Heidelberg

Food

Plan on having breakfast at your hotel before the meeting. Please email the organizers if you have any allergies or dietary restrictions.

Being a university and hospital campus, there are several lunch possibilities, including cafeterias, a students mensa, and two restaurants.


Optional Activities in the Area