[med-svn] [Git][med-team/chromhmm][upstream] New upstream version 1.24+dfsg

Nilesh Patra (@nilesh) gitlab at salsa.debian.org
Sat Dec 31 11:32:35 GMT 2022



Nilesh Patra pushed to branch upstream at Debian Med / chromhmm


Commits:
019b88a3 by Nilesh Patra at 2022-12-31T16:52:29+05:30
New upstream version 1.24+dfsg
- - - - -


22 changed files:

- + ANCHORFILES/hs1/RefSeqTES.hs1.txt.gz
- + ANCHORFILES/hs1/RefSeqTSS.hs1.txt.gz
- + ANCHORFILES/mm39/RefSeqTES.mm39.txt.gz
- + ANCHORFILES/mm39/RefSeqTSS.mm39.txt.gz
- + CHROMSIZES/hs1.txt
- + CHROMSIZES/mm39.txt
- + COORDS/hs1/CpGIsland.hs1.bed.gz
- + COORDS/hs1/RefSeqExon.hs1.bed.gz
- + COORDS/hs1/RefSeqGene.hs1.bed.gz
- + COORDS/hs1/RefSeqTES.hs1.bed.gz
- + COORDS/hs1/RefSeqTSS.hs1.bed.gz
- + COORDS/hs1/RefSeqTSS2kb.hs1.bed.gz
- + COORDS/mm39/CpGIsland.mm39.bed.gz
- + COORDS/mm39/RefSeqExon.mm39.bed.gz
- + COORDS/mm39/RefSeqGene.mm39.bed.gz
- + COORDS/mm39/RefSeqTES.mm39.bed.gz
- + COORDS/mm39/RefSeqTSS.mm39.bed.gz
- + COORDS/mm39/RefSeqTSS2kb.mm39.bed.gz
- edu/mit/compbio/ChromHMM/ChromHMM.java
- edu/mit/compbio/ChromHMM/ConvertGeneTable.java
- edu/mit/compbio/ChromHMM/StateAnalysis.java
- + versionlog.txt


Changes:

=====================================
ANCHORFILES/hs1/RefSeqTES.hs1.txt.gz
=====================================
Binary files /dev/null and b/ANCHORFILES/hs1/RefSeqTES.hs1.txt.gz differ


=====================================
ANCHORFILES/hs1/RefSeqTSS.hs1.txt.gz
=====================================
Binary files /dev/null and b/ANCHORFILES/hs1/RefSeqTSS.hs1.txt.gz differ


=====================================
ANCHORFILES/mm39/RefSeqTES.mm39.txt.gz
=====================================
Binary files /dev/null and b/ANCHORFILES/mm39/RefSeqTES.mm39.txt.gz differ


=====================================
ANCHORFILES/mm39/RefSeqTSS.mm39.txt.gz
=====================================
Binary files /dev/null and b/ANCHORFILES/mm39/RefSeqTSS.mm39.txt.gz differ


=====================================
CHROMSIZES/hs1.txt
=====================================
@@ -0,0 +1,25 @@
+chr1	248387328
+chr2	242696752
+chr3	201105948
+chr4	193574945
+chr5	182045439
+chr6	172126628
+chr7	160567428
+chrX	154259566
+chr9	150617247
+chr8	146259331
+chr11	135127769
+chr10	134758134
+chr12	133324548
+chr13	113566686
+chr14	101161492
+chr15	99753195
+chr16	96330374
+chr17	84276897
+chr18	80542538
+chr20	66210255
+chrY	62460029
+chr19	61707364
+chr22	51324926
+chr21	45090682
+chrM	16569


=====================================
CHROMSIZES/mm39.txt
=====================================
@@ -0,0 +1,61 @@
+chr1	195154279
+chr2	181755017
+chrX	169476592
+chr3	159745316
+chr4	156860686
+chr5	151758149
+chr6	149588044
+chr7	144995196
+chr10	130530862
+chr8	130127694
+chr14	125139656
+chr9	124359700
+chr11	121973369
+chr13	120883175
+chr12	120092757
+chr15	104073951
+chr16	98008968
+chr17	95294699
+chrY	91455967
+chr18	90720763
+chr19	61420004
+chr5_JH584299v1_random	953012
+chrX_GL456233v2_random	559103
+chrY_JH584301v1_random	259875
+chr1_GL456211v1_random	241735
+chr1_GL456221v1_random	206961
+chr5_JH584297v1_random	205776
+chr5_JH584296v1_random	199368
+chr5_GL456354v1_random	195993
+chr5_JH584298v1_random	184189
+chrY_JH584300v1_random	182347
+chr7_GL456219v1_random	175968
+chr1_GL456210v1_random	169725
+chrY_JH584303v1_random	158099
+chrY_JH584302v1_random	155838
+chr1_GL456212v1_random	153618
+chrUn_JH584304v1	114452
+chrUn_GL456379v1	72385
+chrUn_GL456366v1	47073
+chrUn_GL456367v1	42057
+chr1_GL456239v1_random	40056
+chrUn_GL456383v1	38659
+chrUn_GL456385v1	35240
+chrUn_GL456360v1	31704
+chrUn_GL456378v1	31602
+chrUn_MU069435v1	31129
+chrUn_GL456389v1	28772
+chrUn_GL456372v1	28664
+chrUn_GL456370v1	26764
+chrUn_GL456381v1	25871
+chrUn_GL456387v1	24685
+chrUn_GL456390v1	24668
+chrUn_GL456394v1	24323
+chrUn_GL456392v1	23629
+chrUn_GL456382v1	23158
+chrUn_GL456359v1	22974
+chrUn_GL456396v1	21240
+chrUn_GL456368v1	20208
+chrM	16299
+chr1_MU069434v1_random	8412
+chr4_JH584295v1_random	1976


=====================================
COORDS/hs1/CpGIsland.hs1.bed.gz
=====================================
Binary files /dev/null and b/COORDS/hs1/CpGIsland.hs1.bed.gz differ


=====================================
COORDS/hs1/RefSeqExon.hs1.bed.gz
=====================================
Binary files /dev/null and b/COORDS/hs1/RefSeqExon.hs1.bed.gz differ


=====================================
COORDS/hs1/RefSeqGene.hs1.bed.gz
=====================================
Binary files /dev/null and b/COORDS/hs1/RefSeqGene.hs1.bed.gz differ


=====================================
COORDS/hs1/RefSeqTES.hs1.bed.gz
=====================================
Binary files /dev/null and b/COORDS/hs1/RefSeqTES.hs1.bed.gz differ


=====================================
COORDS/hs1/RefSeqTSS.hs1.bed.gz
=====================================
Binary files /dev/null and b/COORDS/hs1/RefSeqTSS.hs1.bed.gz differ


=====================================
COORDS/hs1/RefSeqTSS2kb.hs1.bed.gz
=====================================
Binary files /dev/null and b/COORDS/hs1/RefSeqTSS2kb.hs1.bed.gz differ


=====================================
COORDS/mm39/CpGIsland.mm39.bed.gz
=====================================
Binary files /dev/null and b/COORDS/mm39/CpGIsland.mm39.bed.gz differ


=====================================
COORDS/mm39/RefSeqExon.mm39.bed.gz
=====================================
Binary files /dev/null and b/COORDS/mm39/RefSeqExon.mm39.bed.gz differ


=====================================
COORDS/mm39/RefSeqGene.mm39.bed.gz
=====================================
Binary files /dev/null and b/COORDS/mm39/RefSeqGene.mm39.bed.gz differ


=====================================
COORDS/mm39/RefSeqTES.mm39.bed.gz
=====================================
Binary files /dev/null and b/COORDS/mm39/RefSeqTES.mm39.bed.gz differ


=====================================
COORDS/mm39/RefSeqTSS.mm39.bed.gz
=====================================
Binary files /dev/null and b/COORDS/mm39/RefSeqTSS.mm39.bed.gz differ


=====================================
COORDS/mm39/RefSeqTSS2kb.mm39.bed.gz
=====================================
Binary files /dev/null and b/COORDS/mm39/RefSeqTSS2kb.mm39.bed.gz differ


=====================================
edu/mit/compbio/ChromHMM/ChromHMM.java
=====================================
@@ -12848,7 +12848,7 @@ public class ChromHMM
 
 	if (szcommand.equalsIgnoreCase("Version"))
 	{
-	    System.out.println("This is Version 1.23 of ChromHMM (c) Copyright 2008-2012 Massachusetts Institute of Technology");
+	    System.out.println("This is Version 1.24 of ChromHMM (c) Copyright 2008-2012 Massachusetts Institute of Technology");
 	}
         else if ((szcommand.equals("BinarizeBam"))||(szcommand.equalsIgnoreCase("BinarizeBed")))
 	{
@@ -14012,6 +14012,7 @@ public class ChromHMM
 	    String szoutfile;
 	    boolean buniformheat = ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUNIFORMHEAT; //boolean ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUNIFORMHEAT = false;
 	    boolean bstringlabels = false;
+	    boolean bbrowser = false;
 
 
 	    String sztitle = "Fold Enrichments";
@@ -14061,6 +14062,10 @@ public class ChromHMM
 		  {
 		     bbaseres = false;
 		  }
+		  else if (args[nargindex].equals("-browser"))
+		  {
+		      bbrowser = true;
+		  }
 		  else if (args[nargindex].equals("-f"))
 		  {
 		     szinputcoordlist = args[++nargindex];
@@ -14140,12 +14145,12 @@ public class ChromHMM
 		   if (blowmem)
 		   {
 		      StateAnalysis.enrichmentMaxLowMem(szinput, szinputcoorddir,szinputcoordlist,noffsetleft,noffsetright,nbinsize,  
-							bcenter, bunique,  busesignal,szcolfields,bbaseres, szoutfile,bcolscaleheat,theColor,sztitle, szlabelmapping, bprintimage,bstringlabels);
+							bcenter, bunique,  busesignal,szcolfields,bbaseres, szoutfile,bcolscaleheat,theColor,sztitle, szlabelmapping, bprintimage,bstringlabels,bbrowser);
 		   }
 		   else
 		   {
 		      StateAnalysis.enrichmentMax(szinput, szinputcoorddir,szinputcoordlist,noffsetleft,noffsetright,nbinsize,  
-						  bcenter, bunique,  busesignal,szcolfields,bbaseres, szoutfile,bcolscaleheat,theColor,sztitle, szlabelmapping,bprintimage,bstringlabels);
+						  bcenter, bunique,  busesignal,szcolfields,bbaseres, szoutfile,bcolscaleheat,theColor,sztitle, szlabelmapping,bprintimage,bstringlabels,bbrowser);
 		   }
 	       }
 	       else
@@ -14161,7 +14166,7 @@ public class ChromHMM
 
 	    if (!bok)
 	    {
-		System.out.println("usage OverlapEnrichment [-a cell][-b binsize][-binres][-color r,g,b][-center][-colfields chromosome,start,end[,signal]]"+
+		System.out.println("usage OverlapEnrichment [-a cell][-b binsize][-binres][-browser][-color r,g,b][-center][-colfields chromosome,start,end[,signal]]"+
                                    "[-e offsetend][-f coordlistfile][-labels][-lowmem][-m labelmappingfile]"+
                                    "[-multicount][-noimage][-posterior][-s offsetstart][-signal][-t title][-uniformscale]"+
                                    " inputsegment inputcoorddir outfileprefix");
@@ -14179,6 +14184,7 @@ public class ChromHMM
 	    boolean busestrand =ChromHMM.DEFAULT_NEIGHBORHOOD_BUSESTRAND; 
 	    boolean busesignal = ChromHMM.DEFAULT_NEIGHBORHOOD_BUSESIGNAL; 
 	    boolean bstringlabels = false;
+	    boolean bbrowser = false;
 	    String szcolfields = null;
 	    int noffsetanchor = ChromHMM.DEFAULT_NEIGHBORHOOD_NOFFSETANCHOR; 
 	    String szoutfile; 
@@ -14210,6 +14216,10 @@ public class ChromHMM
 		  {
 		     nbinsize = Integer.parseInt(args[++nargindex]);
 		  }
+		  else if (args[nargindex].equals("-browser"))
+		  {
+		      bbrowser = true;
+		  }
 		  else if (args[nargindex].equals("-color"))
 		  {
 		     String szcolor = args[++nargindex];
@@ -14308,19 +14318,22 @@ public class ChromHMM
 	       {
 		   //this is an undocumented feature to compute signal enrichment for marks around a position
 	           StateAnalysis.neighborhoodSignal(szinput,szcell,szanchorpositions,nbinsize,numleft,numright,
-						    nspacing,busestrand,busesignal,szcolfields,noffsetanchor,szoutfile,theColor,sztitle,szlabelmapping, bprintimage);
+						    nspacing,busestrand,busesignal,szcolfields,noffsetanchor,szoutfile,theColor,
+                                                    sztitle,szlabelmapping, bprintimage);
 	       }
                else if (bmax)
 	       {
 		   if (blowmem)
 		   {
 	              StateAnalysis.neighborhoodMaxLowMem(szinput,szanchorpositions,nbinsize,numleft,numright,
-							  nspacing,busestrand,busesignal,szcolfields,noffsetanchor,szoutfile,theColor,sztitle,szlabelmapping, bprintimage, bstringlabels);
+							  nspacing,busestrand,busesignal,szcolfields,noffsetanchor,szoutfile,theColor,
+                                                          sztitle,szlabelmapping, bprintimage, bstringlabels, bbrowser);
 		   }
 		   else
 		   {
 	              StateAnalysis.neighborhoodMax(szinput,szanchorpositions,nbinsize,numleft,numright,
-						    nspacing,busestrand,busesignal,szcolfields,noffsetanchor,szoutfile,theColor,sztitle,szlabelmapping, bprintimage, bstringlabels);
+						    nspacing,busestrand,busesignal,szcolfields,noffsetanchor,szoutfile,theColor,sztitle,szlabelmapping, 
+                                                    bprintimage, bstringlabels,bbrowser);
 		   }
 	       }
 	       else
@@ -14336,7 +14349,7 @@ public class ChromHMM
 
 	    if (!bok)
 	    {
-		System.out.println("usage NeighborhoodEnrichment [-a cell][-b binsize][-color r,g,b][-colfields chromosome,position[,optionalcol1|,optionalcol1,optionalcol2]"+
+		System.out.println("usage NeighborhoodEnrichment [-a cell][-b binsize][-browser][-color r,g,b][-colfields chromosome,position[,optionalcol1|,optionalcol1,optionalcol2]"+
                                   "[-l numleftintervals][-labels][-lowmem][-m labelmappingfile][-noimage][-nostrand]"+
                                   "[-o anchoroffset][-posterior][-r numrightintervals]"+
                                   "[-s spacing][-signal][-t title] inputsegment anchorpositions outfileprefix");
@@ -14852,7 +14865,7 @@ public class ChromHMM
 							  ChromHMM.DEFAULT_OVERLAPENRICHMENT_BCENTER, !ChromHMM.DEFAULT_OVERLAPENRICHMENT_BCOUNTMULTI, 
                                                           ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUSESIGNAL,null,//szcolfields,
                                                           ChromHMM.DEFAULT_OVERLAPENRICHMENT_BBASERES, szoutputdir+"/"+szprefix+ChromHMM.SZOVERLAPEXTENSION,
-								       !ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUNIFORMHEAT,theColor,"Fold Enrichment "+szprefix,null,bprintimage, false);
+								       !ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUNIFORMHEAT,theColor,"Fold Enrichment "+szprefix,null,bprintimage, false,false);
 				  }
 				  else
 				  {
@@ -14864,7 +14877,7 @@ public class ChromHMM
 							  ChromHMM.DEFAULT_OVERLAPENRICHMENT_BCENTER, !ChromHMM.DEFAULT_OVERLAPENRICHMENT_BCOUNTMULTI, 
                                                           ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUSESIGNAL,null,//szcolfields,
                                                           ChromHMM.DEFAULT_OVERLAPENRICHMENT_BBASERES, szoutputdir+"/"+szprefix+ChromHMM.SZOVERLAPEXTENSION,
-								 !ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUNIFORMHEAT,theColor,"Fold Enrichment "+szprefix,null,bprintimage, false);
+								 !ChromHMM.DEFAULT_OVERLAPENRICHMENT_BUNIFORMHEAT,theColor,"Fold Enrichment "+szprefix,null,bprintimage, false,false);
 				  }
 				  String szoverlapoutfile = szprefix+ChromHMM.SZOVERLAPEXTENSION+".txt";
 				  if (bprintimage)
@@ -14913,7 +14926,7 @@ public class ChromHMM
 							     ChromHMM.DEFAULT_NEIGHBORHOOD_NUMRIGHT, nbinsize,//nspacing
                                            ChromHMM.DEFAULT_NEIGHBORHOOD_BUSESTRAND,ChromHMM.DEFAULT_NEIGHBORHOOD_BUSESIGNAL,null,//szcolfields,
                                            ChromHMM.DEFAULT_NEIGHBORHOOD_NOFFSETANCHOR,szoutputdir+"/"+szprefix+"_"+szanchorname+"_neighborhood",
-									    theColor,"Fold Enrichment "+szprefix+" "+szanchorname,null,bprintimage,false);
+									    theColor,"Fold Enrichment "+szprefix+" "+szanchorname,null,bprintimage,false,false);
 				     }
 				     else
 				     {
@@ -14922,7 +14935,7 @@ public class ChromHMM
 							     ChromHMM.DEFAULT_NEIGHBORHOOD_NUMRIGHT, nbinsize,//nspacing
                                            ChromHMM.DEFAULT_NEIGHBORHOOD_BUSESTRAND,ChromHMM.DEFAULT_NEIGHBORHOOD_BUSESIGNAL,null,//szcolfields,
                                            ChromHMM.DEFAULT_NEIGHBORHOOD_NOFFSETANCHOR,szoutputdir+"/"+szprefix+"_"+szanchorname+"_neighborhood",
-								      theColor,"Fold Enrichment "+szprefix+" "+szanchorname,null,bprintimage,false);
+								      theColor,"Fold Enrichment "+szprefix+" "+szanchorname,null,bprintimage,false,false);
 				     }
 				     String szneighborhoodoutfileprefix = szprefix+"_"+szanchorname+ChromHMM.SZNEIGHBORHOODEXTENSION;
 				   
@@ -15141,6 +15154,9 @@ public class ChromHMM
             int nargindex = 1;
 	    int npromoterwindow = 2000;
 	    boolean bgzip = false;
+	    boolean bnobin = false;
+	    boolean bnoheader = false;
+	    boolean bbiggenepred = false;
 	    String szcoorddir;
 	    String szanchordir;
 
@@ -15152,14 +15168,26 @@ public class ChromHMM
 		  //    {
 		  //	  szfullprefixpathchromsizedir = args[++nargindex];
 		  //    }
-                  if (args[nargindex].equals("-gzip"))
+		  if (args[nargindex].equals("-biggenepred"))
+		  {
+		     bbiggenepred = true;
+		  }
+                  else if (args[nargindex].equals("-gzip"))
 		  {
 	       	     bgzip = true;
 		  }
-                  else if (args[nargindex].equals("-l"))
+	          else if (args[nargindex].equals("-l"))
 		  {
 		     szchromlengthfile = args[++nargindex];
 	          }
+	          else if (args[nargindex].equals("-nobin"))
+		  {
+		      bnobin = true;
+		  }
+		  else if (args[nargindex].equals("-noheader"))
+		  {
+		      bnoheader = true;
+		  }
                   else if (args[nargindex].equals("-u"))
 		  {
 		     szfullprefixpathcoorddir = args[++nargindex];
@@ -15184,6 +15212,11 @@ public class ChromHMM
 	       bok = false;
 	    }
 
+	    if ((bbiggenepred)&&(bnobin))
+	    {
+		bok = false;
+	    }
+
             if (bok && (nargindex==args.length-3))
 	    {
 	       String sztable = args[nargindex++];
@@ -15230,7 +15263,8 @@ public class ChromHMM
 	       }
 
 
-	       ConvertGeneTable.convertGeneTableToAnnotations(sztable, szprefix, szassembly, szcoorddir, szanchordir, szchromlengthfile, npromoterwindow, bgzip);
+	       ConvertGeneTable.convertGeneTableToAnnotations(sztable, szprefix, szassembly, szcoorddir, szanchordir, szchromlengthfile, 
+                                                              npromoterwindow, bgzip, bnobin, bnoheader,bbiggenepred);
 	    }
 	    else
 	    {
@@ -15239,7 +15273,7 @@ public class ChromHMM
 
 	    if (!bok)
 	    {
-                System.out.println("usage: ConvertGeneTable [-gzip][-l chromosomelengthfile][-u coorddir][-v anchordir][-w promoterwindow] inputgenetable prefix assembly");
+                System.out.println("usage: ConvertGeneTable [-biggenepred|-nobin][-gzip][-l chromosomelengthfile][-noheader][-u coorddir][-v anchordir][-w promoterwindow] inputgenetable prefix assembly");
 	    }
 
 	}


=====================================
edu/mit/compbio/ChromHMM/ConvertGeneTable.java
=====================================
@@ -39,11 +39,28 @@ public class ConvertGeneTable
      * exonCount
      * exonStarts
      * exonEnds
-     */
+     
+
+     * or a bigGenePred format, where only the first 12 columns are considered:
+     * chrom
+     * chromStart
+     * chromEnd
+     * name
+     * score
+     * strand
+     * thickStart
+     * thickEnd
+     * reserved
+     * blockCount
+     * blockSizes
+     * chromStarts
+    */
+
     static void convertGeneTableToAnnotations(String sztable, String szprefix,
                                               String szassembly, String szcoorddir, 
 					      String szanchordir, String szchromlengths, 
-                                              int npromoterwindow, boolean bgzip) throws IOException
+                                              int npromoterwindow, boolean bgzip, 
+                                              boolean bnobin, boolean bnoheader, boolean bbiggenepred) throws IOException
     {
 
 	//String sztable = args[0];
@@ -135,43 +152,99 @@ public class ConvertGeneTable
 	HashSet hstes = new HashSet();
 	HashSet hstss2kb = new HashSet();
 
-	br.readLine();
+	if (!bnoheader)
+	{
+	   br.readLine();
+	}
 
 	while ((szLine = br.readLine())!=null)
 	{
 	    StringTokenizer st = new StringTokenizer(szLine,"\t",true);
-	    String szbin = st.nextToken().trim();
-	    if (!szbin.equals("\t"))
-		st.nextToken().trim();
-	    String szname = st.nextToken().trim();
-	    if (!szname.equals("\t"))
-		st.nextToken().trim();
-	    String szchrom = st.nextToken().trim();
-	    if (!szchrom.equals("\t"))
-		st.nextToken().trim();
-	    String szstrand = st.nextToken().trim();
-	    if (!szstrand.equals("\t"))
-		st.nextToken().trim();
-	    String sztxStart = st.nextToken().trim();
-	    if (!sztxStart.equals("\t"))
-		st.nextToken().trim();
-	    String sztxEnd = st.nextToken().trim();
-	    if (!sztxEnd.equals("\t"))
-		st.nextToken().trim();
-	    String szcdsStart = st.nextToken().trim();
-	    if (!szcdsStart.equals("\t"))
-		st.nextToken().trim();
-	    String szcdsEnd = st.nextToken().trim();
-	    if (!szcdsEnd.equals("\t"))
-		st.nextToken().trim();
-	    String szexonCount = st.nextToken().trim();
-	    if (!szexonCount.equals("\t"))
-		st.nextToken().trim();
-	    String szexonStarts = st.nextToken().trim();
-	    if (!szexonStarts.equals("\t"))
-		st.nextToken().trim();
-	    String szexonEnds = st.nextToken().trim();
+	    String szchrom = null;
+	    String szstrand = null;
+	    String sztxStart = null;
+	    String sztxEnd = null;
+	    String szexonStarts = null;
+	    String szexonEnds = null;
+	    String szexonSizes = null;
+	    String szchromStarts = null;
+
+	    if (bbiggenepred)
+	    {
+	       szchrom = st.nextToken().trim();
+	       if (!szchrom.equals("\t"))
+	          st.nextToken().trim();
+	       sztxStart = st.nextToken().trim();
+	       if (!sztxStart.equals("\t"))
+	          st.nextToken().trim();
+	       sztxEnd = st.nextToken().trim();
+	       if (!sztxEnd.equals("\t"))
+	          st.nextToken().trim();
+	       String szname = st.nextToken().trim();
+	       if (!szname.equals("\t"))
+	          st.nextToken().trim();
+	       String szscore = st.nextToken().trim();
+	       if (!szscore.equals("\t"))
+	          st.nextToken().trim();
+	       szstrand = st.nextToken().trim();
+	       if (!szstrand.equals("\t"))
+	          st.nextToken().trim();
+	       String szthickStart = st.nextToken().trim();
+	       if (!szthickStart.equals("\t"))
+	          st.nextToken().trim();
+	       String szthickEnd = st.nextToken().trim();
+	       if (!szthickEnd.equals("\t"))
+	          st.nextToken().trim();
+	       String szreserved = st.nextToken().trim();
+	       if (!szreserved.equals("\t"))
+	          st.nextToken().trim();
+	       String szexonCount = st.nextToken().trim();
+	       if (!szexonCount.equals("\t"))
+	          st.nextToken().trim();
+	       szexonSizes = st.nextToken().trim();
+	       if (!szexonSizes.equals("\t"))
+	          st.nextToken().trim();
+	       szchromStarts = st.nextToken().trim();
+	    }
+	    else
+	    {
+	       String szbin = null;
+	       if (!bnobin)
+	       {
+	          szbin = st.nextToken().trim();
+	       }
+	       if (!szbin.equals("\t"))
+	          st.nextToken().trim();
+	       String szname = st.nextToken().trim();
+	       if (!szname.equals("\t"))
+	          st.nextToken().trim();
+	       szchrom = st.nextToken().trim();
+	       if (!szchrom.equals("\t"))
+	          st.nextToken().trim();
+	       szstrand = st.nextToken().trim();
+	       if (!szstrand.equals("\t"))
+	          st.nextToken().trim();
+	       sztxStart = st.nextToken().trim();
+	       if (!sztxStart.equals("\t"))
+	          st.nextToken().trim();
+	       sztxEnd = st.nextToken().trim();
+	       if (!sztxEnd.equals("\t"))
+	          st.nextToken().trim();
+	       String szcdsStart = st.nextToken().trim();
+	       if (!szcdsStart.equals("\t"))
+	          st.nextToken().trim();
+	       String szcdsEnd = st.nextToken().trim();
+	       if (!szcdsEnd.equals("\t"))
+	          st.nextToken().trim();
+	       String szexonCount = st.nextToken().trim();
+	       if (!szexonCount.equals("\t"))
+	          st.nextToken().trim();
+	       szexonStarts = st.nextToken().trim();
+	       if (!szexonStarts.equals("\t"))
+	          st.nextToken().trim();
+	       szexonEnds = st.nextToken().trim();
 
+	    }
 	    //removed 1.22
 	    //if (!szexonEnds.equals("\t"))
 	    //	st.nextToken();
@@ -228,8 +301,22 @@ public class ConvertGeneTable
 	    String szgeneOut = szchrom+"\t"+sztxStart+"\t"+sztxEnd;
 	    String szanchorTSSOut = szchrom+"\t"+ntss+"\t"+szstrand;
 	    String szanchorTESOut = szchrom+"\t"+ntes+"\t"+szstrand;
-	    StringTokenizer stexonStarts = new StringTokenizer(szexonStarts,",");
-	    StringTokenizer stexonEnds = new StringTokenizer(szexonEnds,",");
+	    //added two allow " quotes for exon list
+	    StringTokenizer stexonStarts = null;
+	    StringTokenizer stexonEnds = null;
+	    StringTokenizer stexonSizes = null;
+	    StringTokenizer stchromStarts = null;
+
+	    if (bbiggenepred)
+	    {
+	       stexonSizes = new StringTokenizer(szexonSizes,",\"");
+	       stchromStarts = new StringTokenizer(szchromStarts,",\"");
+	    }
+	    else
+	    {
+	       stexonStarts = new StringTokenizer(szexonStarts,",\"");
+	       stexonEnds = new StringTokenizer(szexonEnds,",\"");
+	    }
 
 	    if (bgzip)
 	    {
@@ -286,9 +373,31 @@ public class ConvertGeneTable
 	          hsgene.add(szgeneOut);
 	       }
 
-	       while (stexonStarts.hasMoreTokens())
+	       StringTokenizer stStarts = null;
+	       if (bbiggenepred)
 	       {
-		  String szexonOut = szchrom+"\t"+stexonStarts.nextToken().trim()+"\t"+stexonEnds.nextToken().trim()+"\n";
+	          stStarts = stchromStarts;
+	       }
+	       else
+	       {
+	          stStarts = stexonStarts;
+	       }
+
+	       while (stStarts.hasMoreTokens())
+	       {
+		  String szexonOut = null;
+		  if (bbiggenepred)
+		  {
+		     int nchromstart = Integer.parseInt(sztxStart);
+		     int nexonchromstart = Integer.parseInt(stStarts.nextToken().trim());
+		     int nexonsize = Integer.parseInt(stexonSizes.nextToken().trim());
+		     szexonOut = szchrom+"\t"+(nchromstart+nexonchromstart)+"\t"+(nchromstart+nexonchromstart+nexonsize)+"\n";
+		  }
+		  else
+		  {
+		     szexonOut = szchrom+"\t"+stStarts.nextToken().trim()+"\t"+stexonEnds.nextToken().trim()+"\n";
+		  }
+
 		  if (!hsexon.contains(szexonOut))
 		  {
                      byte[] btformat = szexonOut.getBytes();
@@ -338,9 +447,31 @@ public class ConvertGeneTable
 	          hsgene.add(szgeneOut);
 	       }
 
-	       while (stexonStarts.hasMoreTokens())
+	       StringTokenizer stStarts = null;
+	       if (bbiggenepred)
 	       {
-		  String szexonOut = szchrom+"\t"+stexonStarts.nextToken().trim()+"\t"+stexonEnds.nextToken().trim();
+	          stStarts = stchromStarts;
+	       }
+	       else
+	       {
+	          stStarts = stexonStarts;
+	       }
+
+	       while (stStarts.hasMoreTokens())
+	       {
+
+		  String szexonOut = null;
+		  if (bbiggenepred)
+		  {
+		     int nchromstart = Integer.parseInt(sztxStart);
+		     int nexonchromstart = Integer.parseInt(stStarts.nextToken().trim());
+		     int nexonsize = Integer.parseInt(stexonSizes.nextToken().trim());
+		     szexonOut = szchrom+"\t"+(nchromstart+nexonchromstart)+"\t"+(nchromstart+nexonchromstart+nexonsize);
+		  }
+		  else
+		  {
+		     szexonOut = szchrom+"\t"+stStarts.nextToken().trim()+"\t"+stexonEnds.nextToken().trim();
+		  }
 
                   if (!hsexon.contains(szexonOut))
 		  {


=====================================
edu/mit/compbio/ChromHMM/StateAnalysis.java
=====================================
@@ -666,7 +666,8 @@ public class StateAnalysis
      public static void enrichmentMax(String szinputsegment,String szinputcoorddir,String szinputcoordlist,
 				     int noffsetleft, int noffsetright,
                                      int nbinsize, boolean bcenter,boolean bunique, boolean busesignal,String szcolfields,
-				      boolean bbaseres, String szoutfile,boolean bcolscaleheat,Color theColor,String sztitle, String szlabelmapping, boolean bprintimage, boolean  bstringlabels) throws IOException
+				      boolean bbaseres, String szoutfile,boolean bcolscaleheat,Color theColor,String sztitle, 
+                                      String szlabelmapping, boolean bprintimage, boolean  bstringlabels, boolean bbrowser) throws IOException
     {
 	//usual high memory
 	ArrayList alsegments = new ArrayList(); //stores all the segments
@@ -690,7 +691,17 @@ public class StateAnalysis
 	BufferedReader brinputsegment = Util.getBufferedReader(szinputsegment);
 	while ((szLine = brinputsegment.readLine())!=null)
 	{
+	    //added v1.24
+	    if (bbrowser)
+	    {
+		if ((szLine.toLowerCase(Locale.ENGLISH).startsWith("browser"))||(szLine.toLowerCase(Locale.ENGLISH).startsWith("track")))
+		{
+		    continue;
+		}
+	    }
+
 	    StringTokenizer st;
+
 	    if (bstringlabels)
 	    {
 	       st = new StringTokenizer(szLine,"\t");
@@ -700,6 +711,18 @@ public class StateAnalysis
 	       st = new StringTokenizer(szLine,"\t ");
 	    } 
 
+	    //added in v1.24
+	    int numtokens = st.countTokens();
+	    if (numtokens == 0)
+	    {
+		//skip blank lines
+		continue;
+	    }
+	    else if (numtokens < 4)
+	    {
+		throw new IllegalArgumentException("Line "+szLine+" in "+szinputsegment+" only had "+numtokens+" token(s). Expecting at least 4");
+	    }
+
 	    String szchrom = st.nextToken().trim();
 	    int nbegincoord = Integer.parseInt(st.nextToken().trim());
 	    int nendcoord = Integer.parseInt(st.nextToken().trim());
@@ -965,13 +988,13 @@ public class StateAnalysis
 	             String[] szLineA = szLine.split("\\s+");
 		     if (nstartindex >= szLineA.length)
 		     {
-			 throw new IllegalArgumentException(nstartindex+" is an invalid index for "+szLine+" in "+szinputcoorddir+files[nfile]);
+			 throw new IllegalArgumentException(nstartindex+" is an invalid column index for "+szLine+" in "+szinputcoorddir+files[nfile]);
 		     }
 
 
                      if (nendindex >= szLineA.length)
 		     {
-			 throw new IllegalArgumentException(nendindex+" is an invalid index for "+szLine+" in "+szinputcoorddir+files[nfile]);
+			 throw new IllegalArgumentException(nendindex+" is an invalid column index for "+szLine+" in "+szinputcoorddir+files[nfile]);
 		     }
 
 
@@ -1223,7 +1246,7 @@ public class StateAnalysis
 				     int noffsetleft, int noffsetright,
                                      int nbinsize, boolean bcenter,boolean bunique, boolean busesignal,String szcolfields,
 				      boolean bbaseres, String szoutfile,boolean bcolscaleheat,Color theColor,String sztitle, 
-					    String szlabelmapping, boolean bprintimage, boolean bstringlabels) throws IOException
+					    String szlabelmapping, boolean bprintimage, boolean bstringlabels, boolean bbrowser) throws IOException
     {
 
 
@@ -1314,6 +1337,16 @@ public class StateAnalysis
        BufferedReader brinputsegment = Util.getBufferedReader(szinputsegment);
        while ((szLine = brinputsegment.readLine())!=null)
        {
+
+	  //added v1.24
+	  if (bbrowser)
+	  {
+	     if ((szLine.toLowerCase(Locale.ENGLISH).startsWith("browser"))||(szLine.toLowerCase(Locale.ENGLISH).startsWith("track")))
+	     {
+	        continue;
+	     }
+	  }
+
 	  StringTokenizer st;
 	  if (bstringlabels)
 	  {
@@ -1324,6 +1357,18 @@ public class StateAnalysis
 	     st = new StringTokenizer(szLine,"\t ");
           }
 
+	  //added in v1.24
+	  int numtokens = st.countTokens();
+	  if (numtokens == 0)
+	  {
+	     //skip blank lines
+	     continue;
+	  }
+	  else if (numtokens < 4)
+	  {
+	     throw new IllegalArgumentException("Line "+szLine+" in "+szinputsegment+" only had "+numtokens+" token(s). Expecting at least 4");
+	  }
+
 	  String szchrom = st.nextToken().trim();
 	  int nbegincoord = Integer.parseInt(st.nextToken().trim());
 	  int nendcoord = Integer.parseInt(st.nextToken().trim());
@@ -1616,12 +1661,12 @@ public class StateAnalysis
 	           String[] szLineA = szLine.split("\\s+");
 		   if (nstartindex >= szLineA.length)
 		   {
-		      throw new IllegalArgumentException(nstartindex+" is an invalid index for "+szLine+" in "+szinputcoorddir+files[nfile]);
+		      throw new IllegalArgumentException(nstartindex+" is an invalid column index for "+szLine+" in "+szinputcoorddir+files[nfile]);
 		   }
 
                    if (nendindex >= szLineA.length)
 		   {
-		      throw new IllegalArgumentException(nendindex+" is an invalid index for "+szLine+" in "+szinputcoorddir+files[nfile]);
+		      throw new IllegalArgumentException(nendindex+" is an invalid column index for "+szLine+" in "+szinputcoorddir+files[nfile]);
 		   }
 
 	           String szcurrchrom = szLineA[nchromindex];
@@ -2227,7 +2272,8 @@ public class StateAnalysis
                                        int nbinsize, int numleft, int numright, int nspacing, 
 					boolean busestrand, boolean busesignal, String szcolfields,
 					int noffsetanchor, String szoutfile,Color theColor, 
-					String sztitle,String szlabelmapping, boolean bprintimage, boolean  bstringlabels) throws IOException
+					      String sztitle,String szlabelmapping, boolean bprintimage, 
+                                           boolean  bstringlabels, boolean bbrowser) throws IOException
     {
 
 
@@ -2259,6 +2305,15 @@ public class StateAnalysis
 	//this loops reads in the segmentation 
 	while ((szLine = brinputsegment.readLine())!=null)
 	{
+	    //added v1.24
+	    if (bbrowser)
+	    {
+		if ((szLine.toLowerCase(Locale.ENGLISH).startsWith("browser"))||(szLine.toLowerCase(Locale.ENGLISH).startsWith("track")))
+		{
+		    continue;
+		}
+	    }
+
 	    StringTokenizer st;
 	    if (bstringlabels)
 	    {
@@ -2268,6 +2323,19 @@ public class StateAnalysis
 	    {
 	       st = new StringTokenizer(szLine,"\t ");
 	    }
+
+	    //added in v1.24
+	    int numtokens = st.countTokens();
+	    if (numtokens == 0)
+	    { 
+	       //skip blank lines
+	       continue;
+	    }
+	    else if (numtokens < 4)
+	    {
+	       throw new IllegalArgumentException("Line "+szLine+" in "+szinputsegmentation+" only had "+numtokens+" token(s). Expecting at least 4");
+	    }
+
 	    String szchrom = st.nextToken().trim();
             //assumes segments are in standard bed format which to get to 
 	    //0-based inclusive requires substract 1 from the end
@@ -2636,7 +2704,8 @@ public class StateAnalysis
                                        int nbinsize, int numleft, int numright, int nspacing, 
 					boolean busestrand, boolean busesignal, String szcolfields,
 					int noffsetanchor, String szoutfile,Color theColor, 
-					String sztitle,String szlabelmapping, boolean bprintimage,boolean  bstringlabels) throws IOException
+					String sztitle,String szlabelmapping, boolean bprintimage,
+                                        boolean  bstringlabels, boolean bbrowser) throws IOException
     {
 	//highmem
 	boolean bchrommatch =  false;//added in 1.23 to check for chromosome matches
@@ -2666,6 +2735,15 @@ public class StateAnalysis
 	//this loops reads in the segmentation 
 	while ((szLine = brinputsegment.readLine())!=null)
 	{
+	    //added v1.24
+	    if (bbrowser)
+	    {
+		if ((szLine.toLowerCase(Locale.ENGLISH).startsWith("browser"))||(szLine.toLowerCase(Locale.ENGLISH).startsWith("track")))
+		{
+		    continue;
+		}
+	    }
+
 	    StringTokenizer st;
 	    if (bstringlabels)
 	    {
@@ -2675,6 +2753,19 @@ public class StateAnalysis
 	    {
 		st = new StringTokenizer(szLine,"\t ");
 	    }
+
+	    //added in v1.24
+	    int numtokens = st.countTokens();
+	    if (numtokens == 0)
+	    {
+	       //skip blank lines
+	       continue;
+	    }
+	    else if (numtokens < 4)
+	    {
+	       throw new IllegalArgumentException("Line "+szLine+" in "+szinputsegmentation+" only had "+numtokens+" token(s). Expecting at least 4");
+	    }
+
 	    String szchrom = st.nextToken().trim();
             //assumes segments are in standard bed format which to get to 
 	    //0-based inclusive requires substract 1 from the end
@@ -3817,7 +3908,16 @@ public class StateAnalysis
 	           ncol  = 0;
 		   while (stheader.hasMoreTokens())
 		   {
-		       mappedcol[ncol] = ((Integer) hmNameToID.get(stheader.nextToken().trim())).intValue();
+		       String sznametokentrim = stheader.nextToken().trim(); 
+		       if (hmNameToID.get(sznametokentrim) == null)
+		       {
+			   throw new IllegalArgumentException(sznametokentrim+" in "+comparefiles[nfile]+" was not found in "+szmainmodelfile+". "+
+							      "Mark names should match.");
+		       }
+		       else
+		       {
+		          mappedcol[ncol] = ((Integer) hmNameToID.get(sznametokentrim)).intValue();
+		       }
 		       ncol++;
 		   }
 		}


=====================================
versionlog.txt
=====================================
@@ -0,0 +1,235 @@
+12/29/2022 ChromHMM 1.24
+* Added '-browser' flag to OverlapEnrichment and NeighborhoodEnrichment to allow computing enrichments with browser bed files, which ignores lines
+that begin with 'browser' or 'track'
+* Added included files for the human telomere to telomere assembly hs1 (T2T CHM13v2.0/hs1). Gene annotations are based ncbiRefSeqCurated from UCSC Genome Browser as of Dec. 28, 2022.
+* Added included files for mouse assembly mm39. Gene annotations are based ncbiRefSeqCurated UCSC Genome Browser as of Dec. 28, 2022.
+* In ConvertGeneTable, added a flag '-noheader' to indicate there is no header row in inputgenetable and it should thus be read as data
+* In ConvertGeneTable, added a flag '-biggenepred' to indicate that the inputgenetable is in bigGenePred format
+* In ConvertGeneTable, added a flag '-nobin' to indicate that the first column does not contain bin information for cases in which the 
+inputgenetable is based on the genePred format. If the file is in bigGenePred format the first column cannot contain a bin entry.
+* In ConvertGeneTable, now ignores a double quote ("") when given a list of exon coordinates or sizes
+* In CompareModels, added a more informative error message if a mark of a model being compared to the reference model is not found in the reference model
+* In OverlapEnrichment, added a more informative error message in cases in which a column entry is being accessed in an external coordinate file that does not exist 
+* Modified OverlapEnrichment and NeighborhoodEnrichment to ignore empty lines in the segmentation file
+* In OverlapEnrichment and NeighborhoodEnrichment, added a more informative error message if the segmentation file has less than four entries
+* Now compiled to target a minimum of Java 1.6 from 1.5
+
+
+9/3/2021 ChromHMM 1.23
+* Added the '-mixed' flag with BinarizeBam which allows the command to handle both single end and paired end reads.
+Whether to treat a read as a single end or paired end read is made on a read by read determination based on the paired flag
+in the SamRecord. This thus allows using a mix of paired and single end reads within the same BAM file or across
+different BAM files.
+* Updated BinarizeBed and BinarizeBam to only count reads once from a given file if it appears more than
+once for the same cell-mark combination. This change allows merging within ChromHMM multiple control files 
+corresponding the same cell-mark combination without double counting reads.
+* Updated OverlapEnrichment to provide 10 significant digits after the Base % instead of 5
+* Updated OverlapEnrichment to provide a more informative error message if there are no external coordinate files
+in the provided directory
+* Updated MergeBinary so it would have fewer open files at one time
+* Updated MergeBinary to enforce that a feature (mark) only appears in one subdirectory to avoid a duplicate
+feature after merging. Updated the manual to make clear what is valid input. 
+* Updated NeighborhoodEnrichment to throw an error if there is no chromosome match between the segmentation
+and anchor files
+* Fixed a bug that caused an error to be a thrown when using the combination of '-gzip' and '-printstatebyline'
+with MakeSegmentation and LearnModel commands
+* Made ChromHMM more tolerant to leading/trailing white space. Also made ChromHMM more tolerant to using space
+instead of tab delimiters when spaces would not be expected in the tokens being delimitted. 
+* Updated the manual to note that the name of the gene table format (genePred) that ConvertGeneTable
+expects and provided a pointer to convert predictions in other formats into this format
+* Updated the manual to provide the default value of the '-s seed' option. Also noted under this option
+about the randomization associated with selecting which chromosome files to train with on each iteration
+when speciying the '-n numseq' option.
+
+10/24/2020 ChromHMM 1.22
+* Added a flag '-stacked' to BinarizedBam and BinarizeBed designed for use when binarizing
+the data for stacked model learning, which effectively replaces the cell type entry with 'genome' 
+and the separate cell and mark entries with a cell_mark entry in the cellmarkfiletable entry. 
+* Added the set of options [-splitcols [-k splitcolindex][-m numsplitcols]] to BinarizeBam and BinarizeBed
+to allow binarizing different subsets of the columns in parallel, and then can be later merged with MergeBinary.
+See manual for details on each otpion
+* Added the option '-t type' to MergeBinary. If this option is specified, then it allows merging 
+files other than binary files, in particular signal or controlsignal files. Files in the subdirectories 
+of inputdir that include ‘_type’ in the file name will be merged. By default type is binary, but for 
+regular signal files it should be signal and for control signal files it should be controlsignal.
+* Tweaked the position of column labels to better align with the columns in the heatmap
+* Modified ConvertGeneTable to also read gzipped file
+* Modified ConvertGeneTable to also handle space delimitted chromosome length files
+* Fixed bug that caused ConvertGeneTable only to work if there was a tab after the exonEnd
+* Expanded in the manual the description of the color scale for the enrichment heatmaps
+* Fixed a bug that caused model files to have emission ordering ('E') specified instead of fixed
+specified ('F') when using '-holdroworder' and a model initialization file
+* Clarified that the first parameter to CompareModels is the emission parameters by
+renaming it from referencemodel to referencemodelemissions in the documentation
+* Added more informative error message if in BinarizeSignal number of entries in a line
+does not equal expected number
+
+
+7/5/2020 ChromHMM 1.21
+*Consistent capitalization of 'S' in 'State' in output files
+*More informative error message when trying to use a lifted over
+segmentation with the default parameters of OverlapEnrichment that
+the '-b 1' parameter should be used
+*Added error message if using '-signal' option and no '_signal' named
+files are found
+*Updated ChromHMM to consider the options '-printstatesbyline' and '-printstatebyline' 
+interchangeable and likewise for the '-readstatesbyline' and '-readstatebyline' options
+*Fixed bug so '-color' option in CompareModels is recognized
+*Removed an extra space in the description line of browser files
+*Now handles spaces in labels when using the '-labels' option in OverlapEnrichment or NeighborhoodEnrichment
+*Fixed a bug that if running MergeBinary and not every mark is available in every cell type,
+ChromHMM only prints warning message, and it doesn't throw an exception as before
+*Added a '-lowmem' option to MakeBrowserFiles which uses less memory to create the files.
+This less memory option is also used when applying LearnModel with the '-lowmem' flag  
+
+12/9/2019 ChromHMM 1.20
+*Added a '-noautoopen' option that prevents ChromHMM from trying to automatically open a web browser with the summary page of results.
+*Fixed a bug that prevented the '-printbystatebyline' flag from being recognized in MakeSegmentation unless the '-printposterior' flag was also present
+*Leading and trailing white space are now trimmed from entries when reading a cellmarkfiletable
+*Small code optimization when loading data
+*Added a more informative error message if the number of columns in the headers differ across binarized data
+*Added an API call to get the max state at a specified position for data stored in a 2D array
+
+6/25/2019 ChromHMM 1.19
+* Added a '-labels' option to OverlapEnrichment and NeighborhoodEnrichment that allows
+them to be applied to bed files where the fourth column are state labels that don't correspond to state
+numbers or IDs. If the fourth column has a state ID or state number before a '_' and then followed by a label, 
+the states will state be ordered by the state ID or number, otherwise the state ordering in the output may differ from the original state ordering.
+* Clarified in the documentation that MakeSegmentation expects the columns of the binarized data
+to be in the same order as the columns in the model file which is by default the order of the columns in the binarized data
+used to learn the model. Added error checking enforcing the column names in the model file agree with the binarized data.
+Also added the '-reordercolsmodelfile' option to Reorder which causes the columns in the model file to be reordered
+
+12/26/2018 ChromHMM 1.18
+*Added the option '-splitrows' to BinarizeBam, BinarizeBed, and BinarizeSignal which enables splitting
+the binarized data across multiple files per chromosome. Splitting files can be desired to improve scalability
+in specific large scale applications. If this option is present the maximum number of rows per file is by default 5000, 
+but this can be changed with the added '-j numsplitbins' option.
+*Added the option '-splitrows' to LearnModel and MakeSegmentation. If the binarized data was generated with the '-splitrows' option
+then this flag needs to be present so the segmentation file produces properly named chromosomes with correct coordinates
+*Added the option '-i splitindex' to BinarizeBam and BinarizeBed for conducting row spliting in a more parallelized manner when
+binarizing based on peak data with the '-peaks' option. See the manual for additional information 
+*Added the command MergeBinary which allows merging binary files for different mark subsets split across different
+subdirectories. The command also supports row splitting binary files even if no merging was done with the '-splitrows' option.
+*Added the option '-r bedfilein bedfileout' in Reorder which enables directly relabeling the states in a segmentation or browser
+file after a specifying a reordering, without the need to run MakeSegmentation
+*Added the option '-holdroworder' in the LearnModel command which does not reorder the states of the model
+*Added the option '-scalebeta' to use an alternative numerical procedure to estimate the backward variables, beta, to avoid 
+overflow observed in specialized settings
+*Added a more informative error message in ConvertGeneTable if the chromosome length is not found
+*Modified ChromHMM so that in cases where there is no data for a chromosome in one cell type, but there is in another
+to not produce a segmentation for the chromosome in the cell type with no data. Previously ChromHMM was not consistent
+in whether it would still produce output for a chromosome with no data in one cell type if there was data for the
+chromosome in another cell type. Previously ChromHMM had inconsistent behavior if in one input cell type there was data  
+
+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



View it on GitLab: https://salsa.debian.org/med-team/chromhmm/-/commit/019b88a3833ed5052ba2614320cbedceb5481cb6

-- 
View it on GitLab: https://salsa.debian.org/med-team/chromhmm/-/commit/019b88a3833ed5052ba2614320cbedceb5481cb6
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20221231/905208b2/attachment-0001.htm>


More information about the debian-med-commit mailing list