View Issue Details

IDProjectCategoryView StatusLast Update
0001987Slicer4Core: Extensionspublic2014-03-06 05:06
Reporterjcfr Assigned Tomillerjv  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.1.1Fixed in VersionSlicer 4.1.1 
Summary0001987: Add test to SkullStripper extension
Description

Since SkullStripper is our example of "real' extension, we should really add test.

TagsNo tags attached.

Relationships

related to 0002060 acknowledgedjcfr Move testing data onto Midas 

Activities

millerjv

millerjv

2012-05-15 09:55

developer   ~0004405

How long do we allow tests to run? This is not the sort of algorithm you can run on a "piece" of a dataset. It really needs to run an real dataset. Though we could look at downsampling a dataset.

Can our tests reference the data in the "Download Sample Data"?

jcfr

jcfr

2012-05-15 10:07

administrator   ~0004406

Data associated with "Sample Data" module are downloaded on demand at run time.

That said, I believe the data downloaded by sample data are downloaded from the Slicer wiki which contain link pointing to midas.

In other word, testing data could be directly downloaded from midas using the MIDAS.cmake module.

millerjv

millerjv

2012-05-17 05:46

developer   ~0004452

I have an implementation of Midas hosted testing data nearly complete.

It uses the ExternalData CMake magic that Kitware developed for ITKv4. Patrick Reynolds helped me with the changes in the Midas Web API since the ITKv4 implementation.

The basic idea is that each Extension references data in its local path but that data is simply files that contain hash keys to the real data hosted on Midas. CMake then downloads only the data that is referenced by the tests.

The ExternalData design supports sharing a local data store. I am still trying to get the Extensions configured to all store the data in the same local store (so that if multiple Extensions reference the same data, it is only downloaded once).

I am also trying to set up the CMake magic so that the main CMake files can be in the Slicer source tree and not the Extension source tree.

Finally, the ITK implementation has several layers of complexity that allow the real data to be stored on Midas or just on a website indexed by hash key. I don't think I will understand the CMake magic enough to roll support for all of these options into Slicer. But perhaps a CMake guru can pick up the ball if needed.

jcfr

jcfr

2012-05-17 06:13

administrator   ~0004453

1) The common data store location could probably be configure into SlicerConfig.cmake so that all extensions could share it ?

If I understood properly, this variable could be "ExternalData_BINARY_ROOT".

I don't know yet if this path can be shared between different build that could happen simultaneously. If we find out, such location could probably be "Slicer-Superbuild/../Slicer-ExternalData"

2) By adding "EXternalData.cmake" to Slicer/CMake folder, doing

include(ExternalData)

within an extension should also work since the CMake module path is already properly configured. See [1]

[1] https://github.com/Slicer/Slicer/blob/master/CMake/SlicerConfig.cmake.in#L298

millerjv

millerjv

2012-05-17 06:38

developer   ~0004454

0000001 - Yes, it is that variable. But so far I haven't been successful is setting it and having it be honored.

0000002 - That is exactly what I was looking for.

jcfr

jcfr

2012-05-17 06:40

administrator   ~0004455

Feel free to push a topic on your SkullStripper and Slicer forks so that we can review and share comments. I would also be happy to ask feedback from other folks having experience with ExternalData ..

millerjv

millerjv

2012-05-18 13:37

developer   ~0004503

The branch ExternalDataWIP on my github (millerjv) Slicer4 and SkullStripper repositories show the ExternalData configuration and usage.

I haven't been able to configure a single object store for the Slicer and Extensions. I must be doing something wrong.

If we configure the ExternalData_URL in Slicer, we probably will not need to set it in the Extensions. But I have it there as an example for now. I'll clean it up later.

jcfr

jcfr

2012-05-26 18:52

administrator   ~0004631

See https://github.com/millerjv/SkullStripper/tree/ExternalDataWIP
and https://github.com/millerjv/Slicer4/tree/ExternalDataWIP

jcfr

jcfr

2012-05-27 10:37

administrator   ~0004638

See https://github.com/Slicer/SkullStripper/issues/6

jcfr

jcfr

2012-05-27 13:09

administrator   ~0004639

See https://github.com/Slicer/ExtensionsIndex/issues/23

jcfr

jcfr

2012-07-27 15:40

administrator   ~0005367

Dear issue reporter,

Good news :) Slicer developers SOLVED the problem you reported - YOU now need to VERIFY and CLOSE this issue.

jcfr

jcfr

2014-03-06 05:05

administrator   ~0010911

Closing resolved issues that have not been updated in more than 3 months

Issue History

Date Modified Username Field Change
2012-05-04 14:32 jcfr New Issue
2012-05-04 14:32 jcfr Status new => assigned
2012-05-04 14:32 jcfr Assigned To => jcfr
2012-05-15 09:47 jcfr Assigned To jcfr => millerjv
2012-05-15 09:55 millerjv Note Added: 0004405
2012-05-15 10:07 jcfr Note Added: 0004406
2012-05-17 05:46 millerjv Note Added: 0004452
2012-05-17 06:03 jcfr Relationship added related to 0002060
2012-05-17 06:13 jcfr Note Added: 0004453
2012-05-17 06:38 millerjv Note Added: 0004454
2012-05-17 06:40 jcfr Note Added: 0004455
2012-05-18 13:37 millerjv Note Added: 0004503
2012-05-26 18:50 jcfr Target Version => Slicer 4.1.1 - June 1st 2012
2012-05-26 18:52 jcfr Note Added: 0004631
2012-05-27 10:37 jcfr Note Added: 0004638
2012-05-27 13:09 jcfr Note Added: 0004639
2012-05-27 13:09 jcfr Status assigned => resolved
2012-05-27 13:09 jcfr Fixed in Version => Slicer 4.1.1 - June 1st 2012
2012-05-27 13:09 jcfr Resolution open => fixed
2012-07-27 15:40 jcfr Note Added: 0005367
2014-03-06 05:05 jcfr Note Added: 0010911
2014-03-06 05:06 jcfr Status resolved => closed