8/2/2018 ChromHMM 1.17
*This version fixes a bug introduced in ChromHMM 1.16 that causes ChromHMM to produce anotations only for one chromosome

7/29/2018 ChromHMM 1.16
*Added the command ConvertGeneTable which converts a gene table from the UCSC genome browser table format into gene annotations found in the COORDS and ANCHORFILES directory
*Added the '-gzip' flag to BinarizeBam, BinarizeBed, BinarizeSignal, ConvertGeneTable, MakeSegmentation, MakeBrowserFiles, and LearnModel 
which enables outputting segmentation files from the command in a zipped format
*Added the options '-u coorddir' and '-v anchorfiledir' to LearnModel and ConvertGeneTable which allow specifying the directory of COORDS and ANCHORFILES which defaults to the
directory where the ChromHMM.jar file is.
*Removed duplicate entries in the exon annotation files. This does not effect the enrichments with the default settings. 


4/25/2018 ChromHMM 1.15
*Added danRer11 to the included assemblies
*Added the '-many' flag to LearnModel, MakeSegmentation, and EvalSubset which is more numerically stable when having many input features, i.e. hundreds of features, at the cost
of additional runtime
*Added the '-pseudo' flag to LearnModel. If this flag is present, pseudo counts of 1 are used in computing the model parameters to smooth away from zero values. 
These pseudo counts can provide numerical stability in the situation when the -n numseq  is specified in training and some feature has very few present occurrences.
*Added the '-lowmem' flag option also to EvalSubset which uses less memory by only loading one chromosome in at a time though with potentially additional runtime.
*Added the '-paired' flag to BinarizeBam. If this option is present then reads in the BAM file are treated as pairs, and each pair is counted once with bin assignment is based on shifting half the insert size. If this option is present then the –n shift,  –center, and  –peaks  options cannot be used. 
*Added a more informative error message for the situation in which the chromosome naming in the chromosome length file is
inconsistent with the Bam/Bed files when binarizing data
*Added a more informative error message for the situation in which the chromosome names in the segmentation files are not
consistent with an external annotation when computing enrichments
*Added additional range changing when computing enrichments for situations in which coordinates of the external annotations are off the chromosome.
Such coordinate positions that are off the chromosome are ignored instead of an exception being thrown.
*Fixed a bug that caused exceptions to be thrown if in LearnModel the '-n numseq' option was used without the '-lowmem' flag
*Minor internal changes to the code including some that could give slight performance improvements.
*Added details in the user manual on the computation of the fold enrichment calculation done in OverlapEnrichment and NeighborhoodEnrichment

11/2/2017 ChromHMM 1.14
*Added '-noimage' option to LearnModel, OverlapEnrichment, NeighborhoodEnrichment, CompareModels, Reorder, EvalSubset to surpress printing of image files.
*Added annotations and chromosome length file for the ce11 assembly
*Added a check if a beta value exceeds Double.MAX_VALUE then it is set to Double.MAX_VALUE to improve numerical stability
*Updated the printing of posterior values to always be printed in Locale.ENGLISH to ensure they can still be read back in by ChromHMM if the default Locale is non-compatible
*Fixed a bug in which the default initalization procedure would throw an exception if a chromosome was only one bin long
*Fixed a bug in which the bin(s) with the maximum control value genomewide was not being binarized correctly.
*Updated handling of situation in which control files were provided for some, but not all marks in a cell type. Previously if only one unique file was provided for a cell type it was used for all other marks in the cell type. Now a uniform control is assume. Previously if there was two or more unique control files for a cell type, then a mark without a control was not being binarized correctly because of the above fixed bug.
*Slight change with update to how initial values of the initial parameters are set when not using all chromosomes for initialization

11/2/2017 ChromHMM 1.13 (GitHub only release)
*Added '-lowmem' flag to LearnModel, OverlapEnrichment, NeighborhoodEnrichment, and  MakeSegmentation to have ChromHMM only load one chromosome file into memory at time thus reducing maximum memory usage at a potential of additional runtime
*Added '-n numseq' flag to LearnModel. If this flag is present and the ‘-p’ flag is present then on each iteration of training only numseq chromosome files are randomly selected to be used for training. In such cases the ‘-d’ flag should be set to a negative number so model learning does not terminate prematurely since negative changes in the log-likelihood are expected since different chromosomes are used on each iteration. Also only numseq files are considered in the initial model initialization under the default ‘information’ mode. If the ‘-n’ flag is specified without the ‘-p’ flag a subset of chromosomes will still be used for initialization, but all chromosomes will still be used on all iterations of training.


4/3/2016 ChromHMM 1.12 (4/15/2016 updated hg38 and rn6 CpGIsland files)
*Fixed a numerical instability issue that could cause
NA in the models when including missing data (encoded by a '2' in the input) in special cases
*Fixed a bug in Reorder in its handling of the situation when adding labels
at the same time as reordering the states. Now it consistently expects
both the prefix and state number of the new states.
* CpGIsland coordinate files for hg38 and rn6 added in Version 1.11 were not in bed format causing an exception to be thrown when computing enrichments
with these. These files were fixed on 4/15/2016.

7/27/2015 ChromHMM 1.11
*Added a BinarizeBam command that allows binarization of aligned reads in bam files instead of bed files. This uses the HTSJDK software to implement this feature.
*Added annotations for assemblies rn6, hg38, dm6, danRer10, and ce10, and updated annotation files for the other assemblies.
*Added the option in BinarizeBed/BinarizeBed/BinarizeSignal to put a binarzation threshold directly on the signal level through a -g option
*Added support for gzip files for the commands EvalSubset and CompareModels, so now all ChromHMM commands support both text and gzip format of files
*Fixed a bug in the Reorder command which did not update the ordering prefix character, and instead maintained the orignal prefix. 
If the states are reorder based on a user provided ordering they will now have a 'U' prefix, a 'T' prefix for transition based ordering, 
and a 'E' prefix for an emission based ordering.
*Fixed a bug which caused the Reorder command to throw exceptions when parsing elim* model files generated from the StatePruning command
*Now ignores Hidden files when considering a set of files in a directory
*Previously it was undocumented what happens if the same cell-mark combination appears multiple times in the cell-mark-file table.
It was and remains the policy that for the target signal reads are combined for each entry in the combination. For control data previously
reads for each entry was also combined, while in this version the policy is changed so each unique entry is only counted once.
*Improved floating point stability when running ChromHMM with hundreds of features. Now if the emission probability for all states at a position
is less than 10^-300, then each state is associated with an emission probability of 10^-300, to prevent all states from getting 0 probability
causing instability.
*Fixed a bug which led to not giving working links to the model files from the generated webpage when using the '-i outfileID' option. 
Also in these cases the webpage is now named based on webpage_NUMSTATES_outfileID.html.  
*Gives more informative error message in places. 
*Renamed the included file Lamina.hg18.bed.gz to laminB1lads.hg18.bed.gz for consistency with the hg19 naming.
*Minor internal changes to the code that could give slight performance improvements.
*Now include the source code for the Heatmap (org.tc33.jheatchart.HeatChart.java) in the zipfile download which was previously modified
from its original state.
*Updated the license from GPL 2.0 to 3.0.

7/28/2013 ChromHMM 1.10 
*Added the option for LearnModel train in parallel using multiprocessors with the '-p' option. 
The value option specifies the maximum number of processors ChromHMM should try use or if 0 the maximum is set to the number of processors available.
*Added annotations for assemblies mm10, rn5, danRer7 and updated the annotations for the other assemblies.
*Fixed a minor bug that prevented printing of control signal without requesting print of regular signal in BinarizeBed.
*Updated StatePruning to output models with a 1-based numbering instead of a 0-based numbering.

11/4/2012 ChromHMM 1.06 
*Added the EvalSubset command

10/16/2012 ChromHMM 1.05 
*Fixed inconsistencies in whether the label file labelmappingfile used or did not use
the state ordering letter prefix. Now the state ordering letter prefix is consistently required.

10/14/2012 ChromHMM 1.04 
*Fixed a bug with treatment of missing data sets and control data was being used that caused the data to not be binarized. 
*Also fixed a bug that caused any overlap coordinates past the end of segmentations not to be handled correctly. 

5/27/2012 ChromHMM 1.03 
*Added the ability to specify descriptive state labels or mnemonics in OverlapEnrichment, NeighborhoodEnrichment, and 
Reorder. 
*Fixed a bug that caused OverlapEnrichment to throw an exception if there was a chromosome included in the segmentation 
without any coordinates in the file being overlapped. 

3/12/2012 ChromHMM 1.02 
*minor fix so that state colors remain consistent if a concatenated model is learned across multiple cell types but not every state is 
assigned to a location in every cell type

2/8/2012 ChromHMM 1.01 
*bug fixed with four column cell-mark table

2/1/2012 ChromHMM 1.00 released
