NASA - PDS Cassini Propeller Hunter C++ and Java Code Refactoring Assembly

Key Information

The challenge is finished.

Challenge Overview

Challenge Overview

A single program is provided which trains a model and uses this model to predict candidate propellers and linking information. The desired assembly tasks and performance improvements are listed below. The code is currently split into a solution (C++) and tester (Java). Part of the assembly is combining these into a single C++ or Java program.

Challenge Requirements

You will address the following in this challenge :

  1. We need to make following updates to improve performance :

    • Port all Java to C++ (or vice versa). This will remove slow communication between separate Java and C++ programs.

    • Add full multithreading (feature extraction, training, prediction, etc…)

  2. Split code into 3 separate programs.

    1. Program 1 – Train on data and output trained Random Forest to a file.

    2. Program 2 – Load trained Random Forest and output predicted candidate propellers from given input data.

    3. Program 3 – Load predicted candidate propellers and output linking information between candidate propellers as well as N most promising candidate propellers.

  3. Add command line options

    • Specify start / end indices of images from .lbl to use in Program 1 & 2

      • The lbl (label) file describes the columns of the tab (table) file. The lbl file also points to the location of the corresponding tab file (examples in testing directory)
    • Time limit (or no limit) for training Random Forest in Program 1

    • Maximum number of trees in Random Forest in Program 1

    • Number of threads in Program 1 & 2

    • Input / output files for each Program

  4. Logging results to files continuously (not all at the end)

  5. Logging error messages to file continuously

  6. Output the (radius, longitude) coordinates along with the (x, y) coordinates of each detection

  7. Improve error messages throughout programs (ie. add which image failed, reason, etc...)

  8. Structure the code in multiple files to make modifications easier

  9. Your solution should work in Ubuntu 14.04 and OSX environments.

  10. Note that the improvement changes should not change the score, but the execution time should be reduced by the performance enhancements. We will just measure execution time when no time limit is specified for a set of images.

Testing Images

For testing, you will need the image files from here (note these files are ~3GB of size):
contest files :
eval files :

The extracted files need to be placed in 'cassini_assembly/testing/contest' and 'cassini_assembly/testing/eval', respectively.


The base code is provided in challenge forums.

Final Submission Guidelines


  • Submit all of your solution files.
  • Submit document describing how to configure (application options), compile, and run your code along with steps to run tests and verify results.


2015 topcoder Open


Final Review:

Community Review Board


User Sign-Off


ID: 30049447