SEED (Sequencing Experiment Event Detection)
          org.seqcode.projects.seed

SEED provides a set of classes for performing statistical-enrichment-based event detection for various types of sequencing experiments. The SEED package also aims to abstract the common functionality that most event detection approaches would require (e.g. finding enriched regions on the genome, etc). In doing so, SEED can be used to rapidly "seed" the development of event detection tools for particular purposes. 

The org.seqcode.projects.seed.FeatureDetection class is the top-level class in this package. All SEED-based event detection tools should derive from this class or sub-classes, and should include a nested Runnable class that derives from the org.seqcode.projects.seed.FeatureDetection.FeatureDetectionThread nested class. in generating a new SEED-based implementation, you need to override the following methods:
- org.seqcode.projects.seed.FeatureDetection.FeatureDetectionThread.findFeatures(Region subReg): should perform the actual feature detection analysis on a given region of the genome. This method can assume that the hits and landscape data structures have been initialized for a given region - for each Sample these data structures contain, respectively: the StrandedBaseCounts hits (sorted), and the binned tag density (after any shifting and extending).
- org.seqcode.projects.seed.FeatureDetection.getProgramName(): This is a simple one; just return a string with the class name (including full package name).
- org.seqcode.projects.seed.FeatureDetection.getMyThread(List<Region> regs): Simply return an instance of the Runnable class that you extended from org.seqcode.projects.seed.FeatureDetection.FeatureDetectionThread. 
- org.seqcode.projects.seed.FeatureDetection.postProcess(): should assume that all features have been discovered - perform any necessary post-processing analysis, and print the results to files.
- main: Of course, you should also provide a main method that packages everything up. 

org.seqcode.projects.seed.SEEDConfig handles command-line arguments that are used by various SEED implementations. When developing a new SEED-based event detection tool, it would be best to include any new required arguments in here. 