Difference between revisions of "Events:CTK-Pre-Hackfest-2010"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(52 intermediate revisions by 6 users not shown)
Line 1: Line 1:
__NOTOC__
 
 
=The Common Toolkit Hackfest at the [http://www.dkfz.de/index.html DKFZ] in Heidelberg, Germany hosted by the [http://www.dkfz-heidelberg.de/en/mbi/index.html MBI].=
 
=The Common Toolkit Hackfest at the [http://www.dkfz.de/index.html DKFZ] in Heidelberg, Germany hosted by the [http://www.dkfz-heidelberg.de/en/mbi/index.html MBI].=
  
 
{|
 
{|
 
|align="left"|This is a working meeting - the goal is to start writing code!
 
|align="left"|This is a working meeting - the goal is to start writing code!
|[[image:Heidelberg corr.jpg|thumb|250px|<big>Heidelberg</big><br>Source: http://upload.wikimedia.org/wikipedia/commons/b/b4/Heidelberg_corr.jpg]]
+
|[[image:Heidelberg corr.jpg|thumb|300px|<big>Heidelberg</big><br>Source: http://upload.wikimedia.org/wikipedia/commons/b/b4/Heidelberg_corr.jpg]]
 +
|[[File:IMG 0941.JPG|thumb|300px|<big>Group picture at a local restaurant</big>]]
 +
|[[File:20100311-CTKHackfest.jpg|thumb|300px|<big>CTK team hacking...</big>]]
 
|}
 
|}
  
 
=Links=
 
=Links=
*[http://www.CommonTk.org http://www.CommonTk.org] (under development - reserved as future home page)
+
The CommonTk homepage with links to other events and organizational information:
 +
*[http://www.CommonTk.org http://www.CommonTk.org] (under development)
  
 
+
----
=Attendees=
 
* Steve Pieper, Boston
 
* Oliver Kutter, Siemens (SCR)
 
* Patrick Cheng, Georgetown University
 
* Julien Finet, Kitware Inc.
 
* Jean-Christophe Fillion-Robin, Kitware Inc.
 
* Julien Jomier, Kitware Inc.
 
* Marco Nolden, DKFZ
 
* Ivo Wolf, DKFZ
 
* Sascha Zelzer, DKFZ
 
  
 
=Topics=
 
=Topics=
  
== Memory Management ==
+
== (1) Memory Management ==
 
* Large Image Handling
 
* Large Image Handling
* Streaming
+
** streaming
* Out of core data management (memory mapped files)
+
** out of core data management (memory mapped files, etc)
 +
** level of detail
 +
** Google Earth 3D
 +
** caching
 
* Decide on smartpointers e.g. C++0x/Boost
 
* Decide on smartpointers e.g. C++0x/Boost
 +
** Afternoon: check Qt vs C++0x/Boost smartpointers
 +
** Rule: Use Smartpointers of the super-class; if there is no super-class, use the one decided upon in the afternoon...
 +
* For large images, wait to see what ITK version 4 is planning to do.
  
== Migrate some code to the repository (e.g. Qt widgets) and use it in our respective toolkits ==
+
== (2) Migrate some code to the repository (e.g. Qt widgets) and use it in our respective toolkits ==
 +
Steve: goal to make some progress on consolidating some Qt widgets from our various projects into a repository that we can all contribute to.
 +
[https://www.slicer.org/wiki/Slicer3:Developers:Projects:QtSlicer Slicer Qt Project]
  
== DICOM IO layer on top of DCMTK: interpretation of DICOM data ==
+
See also [http://www.commontk.org/cgi-bin/trac.cgi/wiki/WidgetPlans CTK Widget Wish List]
 +
Make use of [http://www.libqxt.org/ Qxt]? [http://qwt.sourceforge.net/ Qwt]?
  
== Interoperability of plugins ==
+
[[Projects:ARRA:SlicerAM| Slicer Annotation and Markup project for reporting]]
  
== Generic event mechanism (e.g. event bus, translate events into signals) ==
+
== (3) DICOM IO layer on top of DCMTK: interpretation of DICOM data ==
 +
 
 +
* [http://www.atamai.com/cgi-bin/viewvc.cgi/AtamaiVTK/vtkAtamaiIO/?root=cvspriv David Gobbi's CMake/VTK wrappers for DCMTK]
 +
* [http://graphics.tudelft.nl/Projects/DeVIDE Delft project includes DCMTK]
 +
 
 +
== (4) Interoperability of plugins ==
 +
Steve: Summarize what would it take to make a standard that could handle at least the three following systems:
 +
* [https://www.slicer.org/wiki/Slicer3:Execution_Model_Documentation Slicer Command Line Execution Model]
 +
* [https://collab01a.scr.siemens.com/xipwiki/index.php/Main_Page XIP / DICOM WG23 Application Hosting]
 +
* [https://collab01a.scr.siemens.com/xipwiki/index.php/Main_Page XIP-Builder / Visual Programming Interface integration]
 +
* [http://www.nitrc.org/projects/jist/ MIPAV/JIST plugins]
 +
*[http://www.na-mic.org/Wiki/index.php/OpenIGTLink OpenIGTLink]
 +
If we can handle those, then that's probably broad enough to cover many common scenarios.
 +
 
 +
Jc: [[Events:CTK-Hackfest-2010/SlicerPythonQt | PythonQt]] and the [[Events:CTK-Hackfest-2010/SlicerQtPluginArchitecture | Qt based plugin architecture used in SlicerQt]]
 +
 
 +
Sascha, Olivier: Generic service oriented approach to expose modules for multiple platforms.
 +
 
 +
== (5) Generic event mechanism (e.g. event bus, translate events into signals) ==
 +
* Sascha
 +
 
 +
----
  
 
=Proposed Agenda=
 
=Proposed Agenda=
Line 51: Line 73:
 
*16:00 Presentation of first results, planning of further agenda
 
*16:00 Presentation of first results, planning of further agenda
 
==Tuesday==
 
==Tuesday==
 +
 +
Hacking...
 +
 +
* [http://github.com/pieper/CTK CTK Git repository]
 +
** Initial layout supports cross-toolkit code in the Libs directory (i.e. qCTKDCMTK that combines Qt with DCMTK)
 +
** We may refactor the directory layout later
 +
** We can consider making an automated [http://blog.fallingsnow.net/2007/08/17/maintaining-an-svn-mirror-directly-from-git/| svn mirror of git]
 +
** [http://www.cmake.org/Wiki/CMake/Git CMake wiki page with git hints]
 +
 +
* Distributing CTK:
 +
** Provide an initial CmakeLists.txt file that exposes a series of options
 +
** Use [[2010_Winter_Project_Week_CMAKE_Build_process| CMake external project (SuperBuild)]]
 +
 +
* DICOM Database schema example
 +
** [https://www.slicer.org/wiki/DICOM:Database Discussion here].
 +
 +
* Volume rendering [http://dl.dropbox.com/u/1686930/polyp1.nrrd test data]
 +
 
==Wednesday==
 
==Wednesday==
 +
 +
 +
* DICOM interface discussion
 +
** [https://www.slicer.org/wiki/DICOM:Interface Slicer notes on dicom interface and other server/database interfaces].
 +
 +
 +
* Effort to plug some XIP code into MITK
 +
 +
* Drafting a first generic plugin framework (based on Qt)
 +
 +
 +
* CTK Repository Naming Conventions:
 +
** CTK
 +
*** Libs
 +
**** Core (depends on QtCore, filenames start with ctk)
 +
***** ctkBundleActivator.h
 +
***** ctkBundleContext.h
 +
**** DICOM
 +
**** Scripting
 +
***** PythonQt
 +
**** Visualization
 +
***** VTK
 +
***** OpenInventor
 +
**** Widgets
 +
*** Utilities
 +
**** DCMTK
 +
**** KWStyle
 +
**** ZMQ
 +
*** Testing
 +
*** Examples
 +
*** Documentation
 +
 +
* CTK File Naming Conventions
 +
** ''Considerations:''
 +
*** allow KWStyle regular expressions to identify coding style (style is based on parent class - vtkObjects use vtk style, QObjects use Qt style).
 +
*** name should indicate dependencies - using ctk prefix implies QtCore dependency
 +
 +
* [http://www.zeromq.org/ Zero Message Queue] ported to CMake and added to repository
 +
 +
* [http://my.cdash.org/index.php?project=CTK CTK Dashboard hosted by my.cdash.org]
 +
 
==Thursday==
 
==Thursday==
 +
 +
* TODO items for the day and beyond ''updates in italics''
 +
** Add xip as external project to CTK superbuild ''requires small change to handle svn repository with a password (Jc)''
 +
*** widget needs to be added to ctk git ''done (Ivo/Oliver) - widget is plugged into MITK - need to plan follow up meeting to work out use cases for NA-MIC integration of XIP - could be done in Boston or in Princeton (Steve and Oliver)''
 +
** Setup PythonQt as external project and add related widgets to CTK repository ''requires small rework - Jc will do''
 +
** Setup nightly builds for windows, mac, linux  ''linux set up, more to follow''
 +
** Messaging - ctk class event manager and dispatcher as a demo (e.g. send IGSTK messages to MITK) - zmq supports both in-process and cross-process messaging. ''Patrick hecked in example multi-process messaging app (client/server)''
 +
** Slicer CLI in MITK ''delayed a bit - Jc is refactoring the slicerqt CLI code into more generic widget and xml parser)''
 +
** OpenIGTLink as superbuild external project ''(done - Patrick)''
 +
** Qt Mobility running in linux - example service for discovering CLI ''in-process (Sascha)''
 +
** Launcher in Qt ''todo (Steve/JC/J2)''
 +
*** Fast splash screen
 +
*** setting paths
 +
*** launching debuggers with paths resolved
 +
*** monitor main application behavior (auto bug report?)
 +
** DICOM
 +
*** Indexer working with CTK-built DCMTK - CLI existing - ''done (Marco)''
 +
*** Example application to tie sql database to qt widgets - ''mockup query/retrieve front end (Steve), database tree display widget (Julien)''
 +
{|
 +
|[[Image:CtkDICOMModel.png|thumb|400px|ctkDICOMModel]]
 +
|}
 +
** Transfer function widget (next week or two) ''todo (Marco to help AlexY port to CTK to support integration with slicer)''
 +
 +
----
 +
 +
=Attendees=
 +
* Steve Pieper, Boston
 +
* Oliver Kutter, Siemens (SCR)
 +
* Patrick Cheng, Georgetown University
 +
* Julien Finet, Kitware Inc.
 +
* Jean-Christophe Fillion-Robin, Kitware Inc.
 +
* Julien Jomier, Kitware Inc.
 +
* Marco Nolden, DKFZ
 +
* Ivo Wolf, DKFZ
 +
* Sascha Zelzer, DKFZ

Latest revision as of 17:44, 10 July 2017

Home < Events:CTK-Pre-Hackfest-2010

The Common Toolkit Hackfest at the DKFZ in Heidelberg, Germany hosted by the MBI.

This is a working meeting - the goal is to start writing code!
Heidelberg
Source: Heidelberg_corr.jpg
Group picture at a local restaurant
CTK team hacking...

Links

The CommonTk homepage with links to other events and organizational information:


Topics

(1) Memory Management

  • Large Image Handling
    • streaming
    • out of core data management (memory mapped files, etc)
    • level of detail
    • Google Earth 3D
    • caching
  • Decide on smartpointers e.g. C++0x/Boost
    • Afternoon: check Qt vs C++0x/Boost smartpointers
    • Rule: Use Smartpointers of the super-class; if there is no super-class, use the one decided upon in the afternoon...
  • For large images, wait to see what ITK version 4 is planning to do.

(2) Migrate some code to the repository (e.g. Qt widgets) and use it in our respective toolkits

Steve: goal to make some progress on consolidating some Qt widgets from our various projects into a repository that we can all contribute to. Slicer Qt Project

See also CTK Widget Wish List Make use of Qxt? Qwt?

Slicer Annotation and Markup project for reporting

(3) DICOM IO layer on top of DCMTK: interpretation of DICOM data

(4) Interoperability of plugins

Steve: Summarize what would it take to make a standard that could handle at least the three following systems:

If we can handle those, then that's probably broad enough to cover many common scenarios.

Jc: PythonQt and the Qt based plugin architecture used in SlicerQt

Sascha, Olivier: Generic service oriented approach to expose modules for multiple platforms.

(5) Generic event mechanism (e.g. event bus, translate events into signals)

  • Sascha

Proposed Agenda

Sunday

  • 19:00 Welcome Dinner at Hotel Ritter

Monday - Thursday

  • 9:00 Transfer by bus from Ritter to DKFZ (Note: every day)

Monday at DKFZ

  • 9:30 Short presentation of agenda
  • 9:45 – 12:00 Presentation of topic leaders 20 min each including discussion: requirements, existing libraries, … Coffee breaks on demand
  • 12:00 – 13:00 Lunch
  • 13:00 – 13:30 General discussion Goal: select three topics to start with in smaller teams
  • 13:30 – 16:00 More detailed exploration of topics
  • 16:00 Presentation of first results, planning of further agenda

Tuesday

Hacking...

Wednesday


  • Effort to plug some XIP code into MITK
  • Drafting a first generic plugin framework (based on Qt)


  • CTK Repository Naming Conventions:
    • CTK
      • Libs
        • Core (depends on QtCore, filenames start with ctk)
          • ctkBundleActivator.h
          • ctkBundleContext.h
        • DICOM
        • Scripting
          • PythonQt
        • Visualization
          • VTK
          • OpenInventor
        • Widgets
      • Utilities
        • DCMTK
        • KWStyle
        • ZMQ
      • Testing
      • Examples
      • Documentation
  • CTK File Naming Conventions
    • Considerations:
      • allow KWStyle regular expressions to identify coding style (style is based on parent class - vtkObjects use vtk style, QObjects use Qt style).
      • name should indicate dependencies - using ctk prefix implies QtCore dependency

Thursday

  • TODO items for the day and beyond updates in italics
    • Add xip as external project to CTK superbuild requires small change to handle svn repository with a password (Jc)
      • widget needs to be added to ctk git done (Ivo/Oliver) - widget is plugged into MITK - need to plan follow up meeting to work out use cases for NA-MIC integration of XIP - could be done in Boston or in Princeton (Steve and Oliver)
    • Setup PythonQt as external project and add related widgets to CTK repository requires small rework - Jc will do
    • Setup nightly builds for windows, mac, linux linux set up, more to follow
    • Messaging - ctk class event manager and dispatcher as a demo (e.g. send IGSTK messages to MITK) - zmq supports both in-process and cross-process messaging. Patrick hecked in example multi-process messaging app (client/server)
    • Slicer CLI in MITK delayed a bit - Jc is refactoring the slicerqt CLI code into more generic widget and xml parser)
    • OpenIGTLink as superbuild external project (done - Patrick)
    • Qt Mobility running in linux - example service for discovering CLI in-process (Sascha)
    • Launcher in Qt todo (Steve/JC/J2)
      • Fast splash screen
      • setting paths
      • launching debuggers with paths resolved
      • monitor main application behavior (auto bug report?)
    • DICOM
      • Indexer working with CTK-built DCMTK - CLI existing - done (Marco)
      • Example application to tie sql database to qt widgets - mockup query/retrieve front end (Steve), database tree display widget (Julien)
ctkDICOMModel
    • Transfer function widget (next week or two) todo (Marco to help AlexY port to CTK to support integration with slicer)

Attendees

  • Steve Pieper, Boston
  • Oliver Kutter, Siemens (SCR)
  • Patrick Cheng, Georgetown University
  • Julien Finet, Kitware Inc.
  • Jean-Christophe Fillion-Robin, Kitware Inc.
  • Julien Jomier, Kitware Inc.
  • Marco Nolden, DKFZ
  • Ivo Wolf, DKFZ
  • Sascha Zelzer, DKFZ