Full Code of aidenlab/Juicebox for AI

master 9697464526f6 cached
472 files
91.9 MB
2.1M tokens
4078 symbols
1 requests
Download .txt
Showing preview only (8,365K chars total). Download the full file or copy to clipboard to get everything.
Repository: aidenlab/Juicebox
Branch: master
Commit: 9697464526f6
Files: 472
Total size: 91.9 MB

Directory structure:
gitextract_y7dv046v/

├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.md
│       ├── custom.md
│       └── feature_request.md
├── .gitignore
├── .idea/
│   ├── artifacts/
│   │   ├── Juicebox.xml
│   │   └── JuicerTools.xml
│   ├── compiler.xml
│   ├── copyright/
│   │   ├── Juicebox.xml
│   │   └── profiles_settings.xml
│   ├── encodings.xml
│   ├── jarRepositories.xml
│   ├── kotlinc.xml
│   ├── libraries/
│   │   ├── KotlinJavaRuntime.xml
│   │   ├── broadinstitute.xml
│   │   ├── general.xml
│   │   ├── jargs.xml
│   │   ├── jcuda.xml
│   │   ├── jfreechart_1_0_19.xml
│   │   ├── log4j_core_2_11_0.xml
│   │   └── npy.xml
│   ├── misc.xml
│   ├── modules.xml
│   ├── scopes/
│   │   ├── Juicebox_Source.xml
│   │   └── scope_settings.xml
│   ├── uiDesigner.xml
│   └── vcs.xml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── HiCFormatV8.md
├── HiC_format_v7.docx
├── JuiceboxIcon.icns
├── Juicer.README
├── LICENSE
├── README.md
├── benchmark.sh
├── build.xml
├── data/
│   └── inter.hic
├── internalREADME.md
├── juicebox.properties
├── l4j/
│   ├── config.xml
│   ├── config_bcm.xml
│   ├── config_broad.xml
│   ├── config_fix_for_Erez.xml
│   └── config_nosplash.xml
├── lib/
│   ├── appbundler-1.0.jar
│   ├── broadinstitute/
│   │   ├── htsjdk-1.139.jar
│   │   ├── igv.jar
│   │   └── log4j-core-2.11.0.jar
│   ├── general/
│   │   ├── VectorGraphics2D-0.11.jar
│   │   ├── VectorGraphics2D.LGPL.LICENSE
│   │   ├── commons-math3-3.6.1.jar
│   │   ├── guava-18.0.jar
│   │   ├── hic_tools.3.30.00.jar
│   │   ├── jahmm-0.6.1.jar
│   │   ├── jargs.jar
│   │   ├── jfreechart-1.0.19.jar
│   │   ├── jsi1.1.jar
│   │   └── npy.jar
│   ├── jarbundler-core-3.3.0.jar
│   ├── jcuda/
│   │   ├── jcuda-0.7.0.jar
│   │   ├── jcuda-0.8.0.jar
│   │   ├── jcuda-natives-0.8.0-apple-x86_64.jar
│   │   ├── jcuda-natives-0.8.0-linux-ppc_64.jar
│   │   ├── jcuda-natives-0.8.0-linux-x86_64.jar
│   │   └── jcudaUtils-0.0.4.jar
│   ├── kotlin/
│   │   ├── kotlin-reflect-sources.jar
│   │   ├── kotlin-reflect.jar
│   │   ├── kotlin-stdlib-jdk7-sources.jar
│   │   ├── kotlin-stdlib-jdk7.jar
│   │   ├── kotlin-stdlib-jdk8-sources.jar
│   │   ├── kotlin-stdlib-jdk8.jar
│   │   ├── kotlin-stdlib-sources.jar
│   │   ├── kotlin-stdlib.jar
│   │   ├── kotlin-test-sources.jar
│   │   └── kotlin-test.jar
│   └── universalJavaApplicationStub
├── package.sh
└── src/
    ├── images/
    │   └── manifest.mf
    ├── juicebox/
    │   ├── CommandBroadcaster.java
    │   ├── CommandExecutor.java
    │   ├── CommandListener.java
    │   ├── Context.java
    │   ├── DirectoryManager.java
    │   ├── HiC.java
    │   ├── HiCGlobals.java
    │   ├── IGVUtils.java
    │   ├── MainWindow.java
    │   ├── ProcessHelper.java
    │   ├── Unused.java
    │   ├── assembly/
    │   │   ├── AssemblyFileExporter.java
    │   │   ├── AssemblyFileImporter.java
    │   │   ├── AssemblyHeatmapHandler.java
    │   │   ├── AssemblyOperationExecutor.java
    │   │   ├── AssemblyScaffoldHandler.java
    │   │   ├── AssemblyStateTracker.java
    │   │   ├── IGVFeatureCopy.java
    │   │   ├── OneDimAssemblyTrackLifter.java
    │   │   ├── PsfFileExporter.java
    │   │   ├── PsfFileImporter.java
    │   │   └── Scaffold.java
    │   ├── data/
    │   │   ├── AbstractDatasetReader.java
    │   │   ├── BinReader.java
    │   │   ├── Block.java
    │   │   ├── BlockIndex.java
    │   │   ├── ChromosomeHandler.java
    │   │   ├── CombinedDatasetReader.java
    │   │   ├── CombinedExpectedValueFunction.java
    │   │   ├── ContactRecord.java
    │   │   ├── CustomMatrixZoomData.java
    │   │   ├── Dataset.java
    │   │   ├── DatasetReader.java
    │   │   ├── DatasetReaderFactory.java
    │   │   ├── DatasetReaderV2.java
    │   │   ├── DynamicBlock.java
    │   │   ├── DynamicBlockIndex.java
    │   │   ├── DynamicMatrixZoomData.java
    │   │   ├── ExpectedValueFunction.java
    │   │   ├── ExpectedValueFunctionImpl.java
    │   │   ├── GeneLocation.java
    │   │   ├── HiCFileLoader.java
    │   │   ├── HiCFileTools.java
    │   │   ├── Matrix.java
    │   │   ├── MatrixZoomData.java
    │   │   ├── NormFactorMapReader.java
    │   │   ├── NormalizationVector.java
    │   │   ├── ZoomAction.java
    │   │   ├── ZoomActionTracker.java
    │   │   ├── anchor/
    │   │   │   ├── BEDTools.java
    │   │   │   ├── GenericLocus.java
    │   │   │   ├── GenericLocusParser.java
    │   │   │   ├── GenericLocusTools.java
    │   │   │   ├── MotifAnchor.java
    │   │   │   ├── MotifAnchorParser.java
    │   │   │   └── MotifAnchorTools.java
    │   │   ├── basics/
    │   │   │   ├── Chromosome.java
    │   │   │   ├── ListOfDoubleArrays.java
    │   │   │   ├── ListOfFloatArrays.java
    │   │   │   └── ListOfIntArrays.java
    │   │   ├── binary_file_layout.txt
    │   │   ├── censoring/
    │   │   │   ├── CustomMZDRegionHandler.java
    │   │   │   ├── OneDimSearchUtils.java
    │   │   │   ├── OneDimTrackCensoring.java
    │   │   │   └── RegionPair.java
    │   │   ├── feature/
    │   │   │   ├── Feature.java
    │   │   │   ├── FeatureFilter.java
    │   │   │   ├── FeatureFunction.java
    │   │   │   └── GenomeWideList.java
    │   │   ├── iterator/
    │   │   │   ├── BigContactRecordList.java
    │   │   │   ├── ContactRecordIterator.java
    │   │   │   ├── CoupledIteratorAndOffset.java
    │   │   │   ├── GWIteratorContainer.java
    │   │   │   ├── GenomeWideIterator.java
    │   │   │   ├── IteratorContainer.java
    │   │   │   ├── ListIteratorContainer.java
    │   │   │   ├── ListOfListGenerator.java
    │   │   │   ├── ListOfListIterator.java
    │   │   │   ├── ListOfListIteratorContainer.java
    │   │   │   ├── ParallelizedListOperations.java
    │   │   │   └── ZDIteratorContainer.java
    │   │   └── v9depth/
    │   │       ├── ConstantDepth.java
    │   │       ├── LogDepth.java
    │   │       └── V9Depth.java
    │   ├── encode/
    │   │   ├── EncodeFileBrowser.java
    │   │   ├── EncodeFileRecord.java
    │   │   ├── EncodeTableModel.java
    │   │   ├── UCSCEncodeUtils.java
    │   │   ├── encode.hg18.txt
    │   │   ├── encode.hg19.txt
    │   │   ├── encode.hic.txt
    │   │   ├── encode.mm9.txt
    │   │   └── rnaChip.txt
    │   ├── gui/
    │   │   ├── BoundsPopupMenuListener.java
    │   │   ├── MainMenuBar.java
    │   │   ├── MainViewPanel.java
    │   │   ├── PseudoCountEditor.java
    │   │   └── SuperAdapter.java
    │   ├── mapcolorui/
    │   │   ├── BoundingBoxRenderer.java
    │   │   ├── ColorRangeDialog.java
    │   │   ├── ColorScaleHandler.java
    │   │   ├── CursorRenderer.java
    │   │   ├── Feature2DHandler.java
    │   │   ├── FeatureRenderer.java
    │   │   ├── GeneralTileManager.java
    │   │   ├── HeatmapClickListener.java
    │   │   ├── HeatmapMouseHandler.java
    │   │   ├── HeatmapPanel.java
    │   │   ├── HeatmapRenderer.java
    │   │   ├── HiCMapTileManager.java
    │   │   ├── JColorRangePanel.java
    │   │   ├── OEColorScale.java
    │   │   ├── PearsonColorScale.java
    │   │   ├── PearsonColorScaleEditor.java
    │   │   ├── RangeSlider.java
    │   │   ├── RangeSliderUI.java
    │   │   ├── ResolutionControl.java
    │   │   └── ThumbnailPanel.java
    │   ├── matrix/
    │   │   ├── BasicMatrix.java
    │   │   ├── DiskResidentBlockMatrix.java
    │   │   ├── InMemoryMatrix.java
    │   │   ├── RealMatrixWrapper.java
    │   │   ├── SparseSymmetricMatrix.java
    │   │   ├── SparseVector.java
    │   │   └── SymmetricMatrix.java
    │   ├── state/
    │   │   ├── ImportStateFileDialog.java
    │   │   ├── LoadStateFromXMLFile.java
    │   │   ├── SaveFileDialog.java
    │   │   ├── Slideshow.java
    │   │   ├── State.java
    │   │   ├── XMLFileHandling.java
    │   │   ├── XMLFileParser.java
    │   │   └── XMLFileWriter.java
    │   ├── tools/
    │   │   ├── HiCTools.java
    │   │   ├── chrom/
    │   │   │   └── sizes/
    │   │   │       ├── ChromosomeSizes.java
    │   │   │       ├── EBV.chrom.sizes
    │   │   │       ├── GRCm38.chrom.sizes
    │   │   │       ├── Pf3D7.chrom.sizes
    │   │   │       ├── TAIR10.chrom.sizes
    │   │   │       ├── aedAeg1.chrom.sizes
    │   │   │       ├── anasPlat1.chrom.sizes
    │   │   │       ├── assembly.chrom.sizes
    │   │   │       ├── b37.chrom.sizes
    │   │   │       ├── bTaurus3.chrom.sizes
    │   │   │       ├── calJac3.chrom.sizes
    │   │   │       ├── canFam3.chrom.sizes
    │   │   │       ├── capHir1.chrom.sizes
    │   │   │       ├── ce10.chrom.sizes
    │   │   │       ├── dMel.chrom.sizes
    │   │   │       ├── dm3.chrom.sizes
    │   │   │       ├── dm6.chrom.sizes
    │   │   │       ├── equCab2.chrom.sizes
    │   │   │       ├── felCat8.chrom.sizes
    │   │   │       ├── galGal4.chrom.sizes
    │   │   │       ├── hg18.chrom.sizes
    │   │   │       ├── hg19.chrom.sizes
    │   │   │       ├── hg19_contig.chrom.sizes
    │   │   │       ├── hg38.chrom.sizes
    │   │   │       ├── loxAfr3.chrom.sizes
    │   │   │       ├── macMul1.chrom.sizes
    │   │   │       ├── macMulBaylor.chrom.sizes
    │   │   │       ├── mm10.chrom.sizes
    │   │   │       ├── mm9.chrom.sizes
    │   │   │       ├── oryCun2.chrom.sizes
    │   │   │       ├── oryLat2.chrom.sizes
    │   │   │       ├── panTro4.chrom.sizes
    │   │   │       ├── ratNor5.chrom.sizes
    │   │   │       ├── ratNor6.chrom.sizes
    │   │   │       ├── sCerS288c.chrom.sizes
    │   │   │       ├── sacCer3.chrom.sizes
    │   │   │       ├── spretus.chrom.sizes
    │   │   │       └── susScr3.chrom.sizes
    │   │   ├── clt/
    │   │   │   ├── AggregateProcessing.java
    │   │   │   ├── CLTFactory.java
    │   │   │   ├── CommandLineParser.java
    │   │   │   ├── CommandLineParserForJuicer.java
    │   │   │   ├── JuiceboxCLT.java
    │   │   │   ├── JuicerCLT.java
    │   │   │   ├── UnitTests.java
    │   │   │   ├── juicer/
    │   │   │   │   ├── ABCompartmentsDiff.java
    │   │   │   │   ├── APA.java
    │   │   │   │   ├── Arrowhead.java
    │   │   │   │   ├── CompareLists.java
    │   │   │   │   ├── HiCCUPS.java
    │   │   │   │   ├── HiCCUPS2.java
    │   │   │   │   ├── HiCCUPSDiff.java
    │   │   │   │   ├── HiCCUPSRegionHandler.java
    │   │   │   │   ├── HiCCUPSscores.java
    │   │   │   │   ├── Localizer.java
    │   │   │   │   ├── LoopDomains.java
    │   │   │   │   └── MotifFinder.java
    │   │   │   └── old/
    │   │   │       ├── AddNorm.java
    │   │   │       ├── BPToFragment.java
    │   │   │       ├── BigWig.java
    │   │   │       ├── BinToPairs.java
    │   │   │       ├── CalcKR.java
    │   │   │       ├── CalcMatrixSum.java
    │   │   │       ├── Dump.java
    │   │   │       ├── Eigenvector.java
    │   │   │       ├── FragmentToBed.java
    │   │   │       ├── LibraryComplexity.java
    │   │   │       ├── PairsToBin.java
    │   │   │       ├── Pearsons.java
    │   │   │       ├── PreProcessing.java
    │   │   │       ├── SQLDatabase.java
    │   │   │       ├── Statistics.java
    │   │   │       ├── Summation.java
    │   │   │       └── ValidateFile.java
    │   │   ├── dev/
    │   │   │   ├── APAvsDistance.java
    │   │   │   ├── ChromosomeCalculation.java
    │   │   │   ├── CompareVectors.java
    │   │   │   ├── GeneFinder.java
    │   │   │   ├── HiCArtMNDWriter.java
    │   │   │   ├── IntraChromTriple.java
    │   │   │   ├── MapSelectionPanel.java
    │   │   │   ├── ParallelizedJuicerTools.java
    │   │   │   ├── Private.java
    │   │   │   ├── RandomUtils.java
    │   │   │   ├── TripleCentroid.java
    │   │   │   └── TriplesAPA.java
    │   │   └── utils/
    │   │       ├── Benchmark.java
    │   │       ├── common/
    │   │       │   ├── ArrayTools.java
    │   │       │   ├── HiCFileUtils.java
    │   │       │   ├── MatrixTools.java
    │   │       │   ├── ShellCommandRunner.java
    │   │       │   ├── StatPercentile.java
    │   │       │   └── UNIXTools.java
    │   │       ├── dev/
    │   │       │   ├── AFAUtils.java
    │   │       │   ├── LocalGenomeRegion.java
    │   │       │   ├── LocationType.java
    │   │       │   └── PearsonCorrelationMetric.java
    │   │       ├── juicer/
    │   │       │   ├── GeneTools.java
    │   │       │   ├── apa/
    │   │       │   │   ├── APADataStack.java
    │   │       │   │   ├── APAPlotter.java
    │   │       │   │   ├── APARegionStatistics.java
    │   │       │   │   └── APAUtils.java
    │   │       │   ├── arrowhead/
    │   │       │   │   ├── ArrowheadScore.java
    │   │       │   │   ├── ArrowheadScoreList.java
    │   │       │   │   ├── BinnedScore.java
    │   │       │   │   ├── BlockBuster.java
    │   │       │   │   ├── BlockResults.java
    │   │       │   │   ├── CumulativeBlockResults.java
    │   │       │   │   ├── DynamicProgrammingUtils.java
    │   │       │   │   ├── HighScore.java
    │   │       │   │   ├── MatrixTriangles.java
    │   │       │   │   └── connectedcomponents/
    │   │       │   │       ├── BinaryConnectedComponents.java
    │   │       │   │       └── IndexNode.java
    │   │       │   ├── hiccups/
    │   │       │   │   ├── GPUController.java
    │   │       │   │   ├── GPUController2.java
    │   │       │   │   ├── GPUHelper.java
    │   │       │   │   ├── GPUOutputContainer.java
    │   │       │   │   ├── GPUOutputContainer2.java
    │   │       │   │   ├── GPUTesting.java
    │   │       │   │   ├── HiCCUPS2Kernel_1kb.cu
    │   │       │   │   ├── HiCCUPSConfiguration.java
    │   │       │   │   ├── HiCCUPSKernel.cu
    │   │       │   │   ├── HiCCUPSRegionContainer.java
    │   │       │   │   └── HiCCUPSUtils.java
    │   │       │   └── localizer/
    │   │       │       └── LocalizerUtils.java
    │   │       ├── norm/
    │   │       │   ├── CustomNormVectorFileHandler.java
    │   │       │   ├── ExternalNormalizationVectorLoader.java
    │   │       │   ├── GenomeWideNormalizationVectorUpdater.java
    │   │       │   ├── MultithreadedNormalizationVectorUpdater.java
    │   │       │   ├── NormVectorInfo.java
    │   │       │   ├── NormVectorUpdater.java
    │   │       │   ├── NormalizationCalculations.java
    │   │       │   ├── NormalizationTools.java
    │   │       │   ├── NormalizationVectorIndexEntry.java
    │   │       │   ├── NormalizationVectorUpdater.java
    │   │       │   ├── NormalizedSum.java
    │   │       │   ├── UnusedFunctions.java
    │   │       │   ├── ZeroScale.java
    │   │       │   └── final2/
    │   │       │       ├── FinalScale.java
    │   │       │       └── ScaleThreadObject.java
    │   │       └── original/
    │   │           ├── BigWigUtils.java
    │   │           ├── BlockPP.java
    │   │           ├── BlockQueue.java
    │   │           ├── BlockQueueFB.java
    │   │           ├── BlockQueueMem.java
    │   │           ├── Chunk.java
    │   │           ├── ContactCount.java
    │   │           ├── ExpectedValueCalculation.java
    │   │           ├── FragmentCalculation.java
    │   │           ├── HiCDBUtils.java
    │   │           ├── IndexEntry.java
    │   │           ├── LargeIndexEntry.java
    │   │           ├── MTIndexHandler.java
    │   │           ├── MatrixPP.java
    │   │           ├── MatrixZoomDataPP.java
    │   │           ├── MultithreadedPreprocessor.java
    │   │           ├── MultithreadedPreprocessorHic.java
    │   │           ├── Preprocessor.java
    │   │           ├── merge/
    │   │           │   ├── HiCMergeTools.java
    │   │           │   ├── StatsUtils.java
    │   │           │   └── merger/
    │   │           │       ├── GraphsMerger.java
    │   │           │       ├── Merger.java
    │   │           │       ├── PairedAlignmentStatsMerger.java
    │   │           │       ├── SingleAlignmentStatsMerger.java
    │   │           │       └── StatsMerger.java
    │   │           ├── mnditerator/
    │   │           │   ├── AlignmentPair.java
    │   │           │   ├── AlignmentPairLong.java
    │   │           │   ├── AsciiPairIterator.java
    │   │           │   ├── AsciiToBinConverter.java
    │   │           │   ├── BAMPairIterator.java
    │   │           │   ├── BinPairIterator.java
    │   │           │   ├── ComplexLineParser.java
    │   │           │   ├── GenericPairIterator.java
    │   │           │   ├── MNDFileParser.java
    │   │           │   ├── MNDLineParser.java
    │   │           │   ├── PairIterator.java
    │   │           │   ├── RandomAccessAsciiPairIterator.java
    │   │           │   ├── ShortBinPairIterator.java
    │   │           │   ├── SimpleAsciiPairIterator.java
    │   │           │   └── SimpleLineParser.java
    │   │           └── stats/
    │   │               ├── LoneStatisticsWorker.java
    │   │               ├── ParallelStatistics.java
    │   │               ├── ParallelStatisticsWorker.java
    │   │               ├── StatisticsContainer.java
    │   │               └── StatisticsWorker.java
    │   ├── track/
    │   │   ├── CategoryPanel.java
    │   │   ├── EigenvectorTrack.java
    │   │   ├── HiCCoverageDataSource.java
    │   │   ├── HiCDataAdapter.java
    │   │   ├── HiCDataPoint.java
    │   │   ├── HiCDataSource.java
    │   │   ├── HiCDataTrack.java
    │   │   ├── HiCFeatureTrack.java
    │   │   ├── HiCFixedGridAxis.java
    │   │   ├── HiCFragmentAxis.java
    │   │   ├── HiCGridAxis.java
    │   │   ├── HiCIGVDataAdapter.java
    │   │   ├── HiCLoadDialog.java
    │   │   ├── HiCTrack.java
    │   │   ├── HiCTrackManager.java
    │   │   ├── HiCWigAdapter.java
    │   │   ├── LoadAction.java
    │   │   ├── LoadEncodeAction.java
    │   │   ├── ResourceTree.java
    │   │   ├── TrackConfigDialog.java
    │   │   ├── TrackConfigDialog.jfd
    │   │   ├── TrackConfigPanel.java
    │   │   ├── TrackLabelPanel.java
    │   │   ├── TrackPanel.java
    │   │   ├── feature/
    │   │   │   ├── AnnotationLayer.java
    │   │   │   ├── AnnotationLayerHandler.java
    │   │   │   ├── CustomAnnotationRTree2DHandler.java
    │   │   │   ├── Feature2D.java
    │   │   │   ├── Feature2DGuiContainer.java
    │   │   │   ├── Feature2DList.java
    │   │   │   ├── Feature2DParser.java
    │   │   │   ├── Feature2DTools.java
    │   │   │   ├── Feature2DWithMotif.java
    │   │   │   ├── FeatureFilter.java
    │   │   │   └── FeatureFunction.java
    │   │   ├── tracksMenu_GalGal5.xml
    │   │   ├── tracksMenu_hg19.xml
    │   │   ├── tracksMenu_hg38.xml
    │   │   ├── tracksMenu_mm10.xml
    │   │   └── tracksMenu_mm9.xml
    │   └── windowui/
    │       ├── DisabledGlassPane.java
    │       ├── DumpDialog.java
    │       ├── EditFeatureAttributesDialog.java
    │       ├── FileDropTargetListener.java
    │       ├── GoToPanel.java
    │       ├── HiCChromosomeFigPanel.java
    │       ├── HiCKeyDispatcher.java
    │       ├── HiCLayout.java
    │       ├── HiCRulerPanel.java
    │       ├── HiCZoom.java
    │       ├── JBTreeCellRenderer.java
    │       ├── JSplitButton.java
    │       ├── LoadAssemblyAnnotationsDialog.java
    │       ├── LoadDialog.java
    │       ├── LoadModifiedAssemblyAnnotationsDialog.java
    │       ├── MatrixType.java
    │       ├── NormalizationHandler.java
    │       ├── NormalizationType.java
    │       ├── QCDialog.java
    │       ├── RecentMenu.java
    │       ├── SaveAssemblyDialog.java
    │       ├── SaveImageDialog.java
    │       └── layers/
    │           ├── LayerPanelButtons.java
    │           ├── LayersPanel.java
    │           ├── Load2DAnnotationsDialog.java
    │           ├── MiniAnnotationsLayerPanel.java
    │           ├── PlottingStyleButton.java
    │           ├── SaveAnnotationsDialog.java
    │           ├── UnsavedAnnotationWarning.java
    │           └── annotations2d.txt
    ├── org/
    │   └── tc33/
    │       └── jheatchart/
    │           ├── HeatChart.java
    │           ├── LICENSE.MD
    │           └── README.MD
    └── resources/
        └── manifests/
            ├── juicebox_jar/
            │   └── META-INF/
            │       └── MANIFEST.MF
            └── juicer_tools_jar/
                └── META-INF/
                    └── MANIFEST.MF

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: "[BUG]"
labels: bug
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: [e.g. Windows 10, macOS Mojave, etc]
 - Version [e.g. 1.10.11]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/custom.md
================================================
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---




================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .gitignore
================================================
# Created by .gitignore support plugin (hsz.mobi)
*.iml
.idea/workspace.xml
*.DS_Store
out/
.vscode

================================================
FILE: .idea/artifacts/Juicebox.xml
================================================
<component name="ArtifactManager">
  <artifact type="jar" build-on-make="true" name="Juicebox">
    <output-path>$PROJECT_DIR$/out/artifacts/Juicebox</output-path>
    <root id="archive" name="juicebox.jar">
      <element id="directory" name="META-INF">
        <element id="file-copy" path="$PROJECT_DIR$/src/resources/manifests/juicebox_jar/META-INF/MANIFEST.MF" />
      </element>
      <element id="module-output" name="Juicebox" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-0.8.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcudaUtils-0.0.4.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-natives-0.8.0-apple-x86_64.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-natives-0.8.0-linux-ppc_64.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-natives-0.8.0-linux-x86_64.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jargs.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/broadinstitute/igv.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/broadinstitute/htsjdk-1.139.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/broadinstitute/log4j-core-2.11.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jsi1.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/guava-18.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/npy.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jahmm-0.6.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jfreechart-1.0.19.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/VectorGraphics2D-0.11.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/commons-math3-3.6.1.jar" path-in-jar="/" />
    </root>
  </artifact>
</component>

================================================
FILE: .idea/artifacts/JuicerTools.xml
================================================
<component name="ArtifactManager">
  <artifact type="jar" build-on-make="true" name="JuicerTools">
    <output-path>$PROJECT_DIR$/out/artifacts/JuicerTools</output-path>
    <root id="archive" name="juicer_tools.jar">
      <element id="directory" name="META-INF">
        <element id="file-copy" path="$PROJECT_DIR$/src/resources/manifests/juicer_tools_jar/META-INF/MANIFEST.MF" />
      </element>
      <element id="module-output" name="Juicebox" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-0.8.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcudaUtils-0.0.4.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-natives-0.8.0-apple-x86_64.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-natives-0.8.0-linux-ppc_64.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/jcuda/jcuda-natives-0.8.0-linux-x86_64.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jargs.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/broadinstitute/igv.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/broadinstitute/htsjdk-1.139.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/broadinstitute/log4j-core-2.11.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jsi1.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/hic_tools.3.30.00.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/guava-18.0.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jahmm-0.6.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/jfreechart-1.0.19.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/VectorGraphics2D-0.11.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/npy.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/general/commons-math3-3.6.1.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/kotlin/kotlin-stdlib.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/kotlin/kotlin-reflect.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/kotlin/kotlin-test.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
      <element id="extracted-dir" path="$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
    </root>
  </artifact>
</component>

================================================
FILE: .idea/compiler.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <wildcardResourcePatterns>
      <entry name="?*.properties" />
      <entry name="?*.xml" />
      <entry name="?*.gif" />
      <entry name="?*.png" />
      <entry name="?*.jpeg" />
      <entry name="?*.jpg" />
      <entry name="?*.html" />
      <entry name="?*.dtd" />
      <entry name="?*.tld" />
      <entry name="?*.ftl" />
      <entry name="?*.txt" />
      <entry name="?*.sizes" />
      <entry name="?*.cu" />
      <entry name="?*.sizes" />
    </wildcardResourcePatterns>
  </component>
  <component name="JavacSettings">
    <option name="ADDITIONAL_OPTIONS_STRING" value="-Xlint:all -target 1.8" />
  </component>
</project>

================================================
FILE: .idea/copyright/Juicebox.xml
================================================
<component name="CopyrightManager">
  <copyright>
    <option name="notice" value="The MIT License (MIT)&#10;&#10;Copyright (c) 2011-&amp;#36;today.year Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine&#10;&#10;Permission is hereby granted, free of charge, to any person obtaining a copy&#10;of this software and associated documentation files (the &quot;Software&quot;), to deal&#10;in the Software without restriction, including without limitation the rights&#10;to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&#10;copies of the Software, and to permit persons to whom the Software is&#10;furnished to do so, subject to the following conditions:&#10;&#10;The above copyright notice and this permission notice shall be included in&#10;all copies or substantial portions of the Software.&#10;&#10; THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#10; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#10; FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE&#10; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&#10; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&#10; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN&#10; THE SOFTWARE." />
    <option name="keyword" value="Copyright" />
    <option name="allowReplaceKeyword" value="" />
    <option name="myName" value="Juicebox" />
    <option name="myLocal" value="true" />
  </copyright>
</component>

================================================
FILE: .idea/copyright/profiles_settings.xml
================================================
<component name="CopyrightManager">
  <settings default="Juicebox">
    <module2copyright>
      <element module="Juicebox Source" copyright="Juicebox" />
    </module2copyright>
  </settings>
</component>

================================================
FILE: .idea/encodings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
    <file url="PROJECT" charset="UTF-8" />
  </component>
</project>



================================================
FILE: .idea/jarRepositories.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="RemoteRepositoriesConfiguration">
    <remote-repository>
      <option name="id" value="central" />
      <option name="name" value="Maven Central repository" />
      <option name="url" value="https://repo1.maven.org/maven2" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="jboss.community" />
      <option name="name" value="JBoss Community repository" />
      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="70e4da13-f0e2-4687-8016-2a33fe9db444" />
      <option name="name" value="70e4da13-f0e2-4687-8016-2a33fe9db444" />
      <option name="url" value="https://mvnrepository.com/" />
    </remote-repository>
    <remote-repository>
      <option name="id" value="6a229de0-8f55-448a-99d5-abaf3f3c1a3d" />
      <option name="name" value="6a229de0-8f55-448a-99d5-abaf3f3c1a3d" />
      <option name="url" value="https://oss.sonatype.org/content/repositories/releases/" />
    </remote-repository>
  </component>
</project>

================================================
FILE: .idea/kotlinc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Kotlin2JvmCompilerArguments">
    <option name="jvmTarget" value="1.8" />
  </component>
  <component name="KotlinCommonCompilerArguments">
    <option name="apiVersion" value="1.1" />
    <option name="coroutinesState" value="warn" />
    <option name="languageVersion" value="1.1" />
  </component>
</project>

================================================
FILE: .idea/libraries/KotlinJavaRuntime.xml
================================================
<component name="libraryTable">
  <library name="KotlinJavaRuntime">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-stdlib.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-reflect.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-test.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-jdk7.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-jdk8.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES>
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-reflect-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-test-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-jdk7-sources.jar!/" />
      <root url="jar://$PROJECT_DIR$/lib/kotlin/kotlin-stdlib-jdk8-sources.jar!/" />
    </SOURCES>
  </library>
</component>

================================================
FILE: .idea/libraries/broadinstitute.xml
================================================
<component name="libraryTable">
  <library name="broadinstitute">
    <CLASSES>
      <root url="file://$PROJECT_DIR$/lib/broadinstitute" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
    <jarDirectory url="file://$PROJECT_DIR$/lib/broadinstitute" recursive="false" />
  </library>
</component>

================================================
FILE: .idea/libraries/general.xml
================================================
<component name="libraryTable">
  <library name="general">
    <CLASSES>
      <root url="file://$PROJECT_DIR$/lib/general" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
    <jarDirectory url="file://$PROJECT_DIR$/lib/general" recursive="false" />
  </library>
</component>

================================================
FILE: .idea/libraries/jargs.xml
================================================
<component name="libraryTable">
  <library name="jargs">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/lib/general/jargs.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>

================================================
FILE: .idea/libraries/jcuda.xml
================================================
<component name="libraryTable">
  <library name="jcuda">
    <CLASSES>
      <root url="file://$PROJECT_DIR$/lib/jcuda" />
    </CLASSES>
    <JAVADOC />
    <NATIVE>
      <root url="file://$PROJECT_DIR$/lib/jcuda" />
    </NATIVE>
    <SOURCES>
      <root url="file://$PROJECT_DIR$/lib/jcuda" />
    </SOURCES>
    <jarDirectory url="file://$PROJECT_DIR$/lib/jcuda" recursive="false" />
    <jarDirectory url="file://$PROJECT_DIR$/lib/jcuda" recursive="false" type="SOURCES" />
  </library>
</component>

================================================
FILE: .idea/libraries/jfreechart_1_0_19.xml
================================================
<component name="libraryTable">
  <library name="jfreechart-1.0.19">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/lib/general/jfreechart-1.0.19.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>

================================================
FILE: .idea/libraries/log4j_core_2_11_0.xml
================================================
<component name="libraryTable">
  <library name="log4j-core-2.11.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/lib/broadinstitute/log4j-core-2.11.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>

================================================
FILE: .idea/libraries/npy.xml
================================================
<component name="libraryTable">
  <library name="npy">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/lib/general/npy.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</component>

================================================
FILE: .idea/misc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="IdProvider" IDEtalkID="51DB6E1D1FAF5DDA5C576D86A4DE3101" />
  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/out" />
  </component>
</project>

================================================
FILE: .idea/modules.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/Juicebox.iml" filepath="$PROJECT_DIR$/.idea/Juicebox.iml" />
    </modules>
  </component>
</project>



================================================
FILE: .idea/scopes/Juicebox_Source.xml
================================================
<component name="DependencyValidationManager">
  <scope name="Juicebox Source" pattern="file:src/juicebox//*.java" />
</component>

================================================
FILE: .idea/scopes/scope_settings.xml
================================================
<component name="DependencyValidationManager">
  <state>
    <option name="SKIP_IMPORT_STATEMENTS" value="false" />
  </state>
</component>

================================================
FILE: .idea/uiDesigner.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Palette2">
    <group name="Swing">
      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
      </item>
      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
      </item>
      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
        <initial-values>
          <property name="text" value="Button" />
        </initial-values>
      </item>
      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="RadioButton" />
        </initial-values>
      </item>
      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="CheckBox" />
        </initial-values>
      </item>
      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
        <initial-values>
          <property name="text" value="Label" />
        </initial-values>
      </item>
      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
          <preferred-size width="150" height="-1" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
          <preferred-size width="150" height="50" />
        </default-constraints>
      </item>
      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
          <preferred-size width="200" height="200" />
        </default-constraints>
      </item>
      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
          <preferred-size width="200" height="200" />
        </default-constraints>
      </item>
      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
      </item>
      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
      </item>
      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
      </item>
      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
          <preferred-size width="-1" height="20" />
        </default-constraints>
      </item>
      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
      </item>
      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
      </item>
    </group>
  </component>
</project>



================================================
FILE: .idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GithubSharedProjectSettings">
    <option name="branchProtectionPatterns">
      <list>
        <option value="GUI_AutoTest" />
        <option value="nightly" />
        <option value="Centromeres" />
        <option value="olga_local_standard" />
        <option value="custom_submatrix_option" />
        <option value="AssemblyGui" />
        <option value="switch_cc_to_bins" />
        <option value="code_cleanup_8_1_17" />
        <option value="ProblematicOlgaLocalAT" />
        <option value="Submapping" />
      </list>
    </option>
  </component>
  <component name="VcsDirectoryMappings">
    <mapping directory="" vcs="Git" />
  </component>
</project>

================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
 advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
 address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
 professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at aidenlab@bcm.edu. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Juicebox and/or Juicebox Assembly Tools

:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:

The following is a set of guidelines for contributing to Juicebox and its modules, which are hosted in the [Aiden Lab Repositories](https://github.com/aidenlab) on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.

## Code of Conduct

This project and everyone participating in it is governed by the [Juicebox Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [aidenlab@bcm.edu](mailto:aidenlab@bcm.edu).

## I don't want to read this whole thing I just have a question!!!

> **Note:** Please don't file an issue to ask a question. You'll get faster results by using our [3D-Genomics Official Forum](https://aidenlab.org/forum.html). We have an official message board where the community chimes in with helpful advice if you have questions.

While we strongly suggest using the public forum so that the community at large benefits from the discussion, you can also send us an email at [aidenlab@bcm.edu](mailto:aidenlab@bcm.edu) for questions related to sensitive datasets.

## **Did you find a bug?**

* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/aidenlab/Juicebox/issues).

* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/aidenlab/juicebox/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample, executable test case, or clear set of instructions** demonstrating the expected behavior that is not occurring.

## **Did you write a patch that fixes a bug?**

* Open a new GitHub pull request with the patch.

* Ensure the Pull Request description clearly describes the problem and solution. Include the relevant issue number if applicable.

## **Did you fix whitespace, format code, or make a purely cosmetic patch?**

We welcome changes that are cosmetic in nature and do not necessarily add anything to the stability, functionality, or testability of Juicebox. Please follow commonly practiced Java Style Guides when doing so.

## **Do you intend to add a new feature or change an existing one?**

* Suggest your change by creating a Github issue! Reach out to us at [aidenlab@bcm.edu](mailto:aidenlab@bcm.edu) for advice and start writing code!

## **Do you have questions about the source code?**

* Ask any question about how to use Juicebox and Juicebox Assembly Tools in the [3D Genomics Official Forum](https://aidenlab.org/forum.html).

## **Do you want to contribute to the Juicebox documentation?**

* Reach out to us at [aidenlab@bcm.edu](mailto:aidenlab@bcm.edu).

Juicebox and Juicebox Assembly Tools is a volunteer effort. We encourage you to pitch in and join the team!

Thanks! :heart: :heart: :heart:

The Center for Genome Architecture
Baylor College of Medicine & Rice University


================================================
FILE: HiCFormatV8.md
================================================
# hic file format 

## Structure

* Header
* Body
    * Matrix
    * Block
* Footer
    * Master index
    * Expected value vectors



## Header

|Field | Description |	Type | Value |
|------|------------|------|-------|
|Magic|HiC magic string|String|HIC|
|Version|Version number|int|8|
|footerPosition|File position of the Footer section, containing the master index, expected values, and normalization vectors. |long||
|genomeId|	Genome identifier (e.g. hg19, mm9, etc)|	String||	
||||
|nAttributes	|Number of key-value pair attributes|	int||
||*List of key-value pair attributes (n = nAttributes).  See notes on common attributes below.*||
|key	|Attribute key|	String	||
|value|Attribute value|		String||	
|||||
|nChrs|	Number of chromosomes|int||		
||*List of chromosome lengths (n = nChrs)*||
|chrName	|Chromosome name	|String||	
|chrLength|	Chromosome length |	int	||
|||||
|nBpResolutions	|Number of base pair resolutions|	int||	
||*List of bin sizes for bp resolution levels (n = nBpResolutions)*||
|resBP	|Bin size in base pairs	|int||	
|||||
|nFragResolutions	|Number of fragment resolutions	|int||	
||*List of bin sizes for frag resolution levels (n = nFragResolutions)*||
|resFrag	|Bin size in fragment units (1, 2, 5, etc)|	int||	
|||||
||*List of fragment site positions per chromosome, in same order as chromosome list above (n = nChrs).  This section absent if nFragResolutions = 0.*||
|nSites|	Number of sites for this chromosome|	int||	
||*List of sites (n = nSites)*||
|sitePosition|	Site position in base pairs|	int||	

## Body

The **Header** section is followed immediatly by the **Body**, which containe the contact map data for each 
chromosome-chromosome pairing and each  resolution.   

### Matrix metadata

This section contains metadata  for the contact matrices.  It is repeated for all each chromosome-chromosome pair.  
The master index contains an entry for each combination and is used to randomly access a specific
matrix as needed.  The metadata in this section includes an index for data blocks which contain the actual
contact data.  


|Field	|Description|	Type|	Value|
|------|------------|------|-------|
|chr1Idx| Index for chromosome 1.  This is the index into the array of chromosomes defined in the header above.  The first chromosome has index **0**.|	int||	
|chr2Idx| Index for chromosome 2. |	int	||
|nResolutions	|Total number of resolutions for this chromosome-chromosome pair, including base pair and fragment resolutions.	|int||	
||*Resolution metadata.  Repeat for each resolution. (n = nResolutions)*||
|unit|	Distance unit, base-pairs or fragments	|String	|BP or FRAG|
|resIdx	|Index number for this resolution level, an Array index into the bin size list of the header, first element is **0**. |	int||	
|sumCounts|	Sum of all counts (or scores) across all bins at current resolution.|	float||	
|occupiedCellCount|	Total count of cells that are occupied.  **Not currently used**|int|0|		
|percent5|	Estimate of 5th percentile of counts among occupied bins. **Not currently used**|float|0|		
|percent95|	Estimate of 95th percentile of counts among occupied bins **Not currently used**|float|0|		
|binSize|	The bin size in base-pairs or fragments	|int||	
|blockSize			|Dimension of each block in bins.  Blocks are square, so the total number of bins is ```blockSize^2```.  See description of grid strcture below|int||
|blockColumnCount|The number of columns in the grid of blocks.  |int||			
|blockCount|The number of blocks stored in the file.  Note empty blocks are not stored.|||			
|||||
|*Block index. Repeat for each resolution  (n = nResolutions)*||
|blockNumber	|Numeric id for block.  This is the linear position of the block in the grid when counted in row-major order.   ```blockNumber = column * blockColumnCount + row``` where first row and column **0**	|int|	
|blockPosition|	File position of block|	long|	
|blockSizeBytes	|Size of block in bytes| int|	
||||	
||*Block data*||
| blocks | Compressed blocks for all matrices and resolutions.  See  description below.   |||


#### Block  

A block represents a square sub-matrix of a contact map. 

***Note: Blocks are indivdually compressed with ZLib***

|Field	|Description|	Type|	Value|
|------|------------|------|-------|
|nRecords	|Number or contact records in this block|	int	|
|binXOffset | X offset for the contact records in this block.  The binX value below is relative to this offset.||
|binYOffset | Y offset for the contact records in this block.  The binX value below is relative to this offset.
|useFloat | Flag indicating the ```value``` field in contact records for this block are recorded with data type ```float```.  If == 1 a ```float``` is used, otherwise type is ```short```| byte |
|matrixRepresentation | Representation of matrix used for the contact records.  If == 1 the representation is a ```list of rows```, if == 2 ```dense```. | byte |
|blockData| The block matrix data.  See descriptions below, also  in the notes section.

##### Block data - list of rows

|Field	|Description|	Type|	Value|
|------|------------|------|-------|
|rowCount | Number or rows | short ||
||
|*rows (n = rowCount)*
|rowNumber | Matrix row number, first row is ```0``` | short ||
|recordCount | Number of records for this row. Row is sparse, zeroes are not recorded. | short ||
||
|*contact records (n = cellCount)*||
|binX	|X axis index|	short||
|value	|Value (counts or score). The data type is determined by the ```useFloat``` flag above.|	float : short||	

##### Block data - dense
|Field	|Description|	Type|	Value|
|------|------------|------|-------|
|nRecords | Number of contact records in this block.  | int ||
|w | Width of the dense block.  This can be < the blockSize if the edge columns on either side are zeroes.  See discussion on block representation below | short ||
||
|*contact records (n = nRecords)*||
|value	|Value (counts or score). The data type is determined by the ```useFloat``` flag above.|	float : short||	

### Footer

| Field |	Description|	Type |	Value |
|------|------------|------|-------|
|nBytesV5|	Number of bytes for the “version 5” footer, that is everything up to the normalized expected vectors.  This field (*nBytesV5*) is not included, so the total number of bytes between ```footerPosition``` and ```nNormVectors```  is ```nBytesV5 + 4```. |int||	

#### Master index

| Field |	Description|	Type |	Value |
|------|------------|------|-------|
|nEntries|	Number of index entries|	int||
||	
||*List of index entries (n = nEntries)*||
|key|	A key constructed from the indeces of the two chromosomes for this matrix.  The indeces are defined by the list of chromosomes in the header section with the first chromosome occupying index **0**|String||	
|position	|Position of the start of the chromosome-chromosome matrix record in bytes	|long||	
|size	|Size of the chromosome-chromsome matrix record in bytes.  This does not include the **Block** data.| int||	

#### Expected value vectors

| Field |	Description|	Type |	Value |
|------|------------|------|-------|
|nExpectedValueVectors|	Number of expected value vectors to follow.  These are expected values from the non-normalized observed matrix.| int|	
||
||*List of expected value vectors (n = nExpectedValueVectors)*||
|unit|	Bin units either FRAG or BP.	|String	|FRAG : BP|
|binSize	|Bin (grid) size for this calculation	|int||	
|nValues	|Size of the vector|	int||	
||
|*List of expected values (n = nValues)*|
|value	|Expected value|	double||	
|nChrScaleFactors| Number of chromosome normalization factors| int||
||
||*List of normalization factors (n = nChrScaleFactors)*||
|chrIndex|	Chromosome index|	int||	
|chrScaleFactor|	Chromosome scale factor	|double||	


#### Normalized expected value vectors
| Field |	Description|	Type |	Value |
|------|------------|------|-------|
|nNormExpectedValueVectors|	Number of normalized expected value vectors to follow	|int||	
||
|*List of normalized vectors (n = nNormExpectedValueVectors)*||
|type|	Indicates type of normalization	|String|	VC:KR:INTER_KR:INTER_VC:GW_KR:GW_VC|
|unit	|Bin units either FRAG or BP.	|String|	FRAG : BP|
|binSize|	Bin (grid) size for this calculation	|int||	
|nValues|	Size of the vector	|int	||
||
||*List of expected values (n = nValues)*||
|value	|Expected value	|double||	
||
|nChrScaleFactors|Number of normalizatoin factos for this vector|||
||*List of normalization factors (n = nChrScaleFactors)*||
|chrIndex|	Chromosome index	|int	||
|chrScaleFactor|	Chromosome scale factor	|double||	

#### Normalization vectors
| Field |	Description|	Type |	Value |
|------|------------|------|-------|
|nNormVectors|	Number of normalization vectors |	int||	
||*List of normalization vectors (n=  nNormalizationVectors)*||
|type	|Indicates type of normalization	|String|	VC:KR:INTER_KR:INTER_VC:GW_KR:GW_VC|
|chrIdx|	Chromosome index	|int|	|
|unit|	Bin units either FRAG or BP.|	String|	FRAG : BP|
|binSize	|Resolution 	|int||	
|position|	File position of value array|	long	||
|nBytes|	Size in bytes of value array	|int	||
||*Normalization vector arrays (repeat for each entry above)*||
|nValues|	Number of values in array|	int||	
||*Normalization vector values (n=  nValues)*||



#### Notes

##### Data types

* Strings are null (0) terminated.  So for example the string "HIC" is represented by 4 bytes [48 49 43 0]
* Other data types are Java
    * short - 16 bit integer
    * int - 32 bit integer
    * long  -  64 bit integer
    * float - 32 bit floating point
    * double - 64 bit floating point
    
##### Attributes

The attributes table in the header can contain an arbitrary number of key-value string pairs.  The **Juicer** tool
inserts one or more of the following attributes.
* "statistics":
* "graphs":
* "software":
* "nviIndex":  reserved for future use
* "nviLength":  reserved for future use

#### Grid structure

Each chr-chr matrix at a given resolution is subdivided into a grid structure of square **blocks**. 
Each block consists of NxN bins, where N is referred to as **blockSize**.  In older versions of the spec,
and in code, this parameter is referred to as **blockBinCount**.

For intra chromosome matrices (chr1 == chr2) only the lower diagonal is stored (row >= column).  The upper diagonal
can be inferred upon reading by tansposition.  

#### Block matrix representation

The spatial unit for a block is a ```bin```, which can be computed from a genomic position with the formulat

```bin = floor(position / binSize)```.

The origin of a block is then 

```floor(x / binsSize), floor(y / binSize)```

where x and y are genomic positions in either base pairs or fragment number, depending on the

* List of rows

The list of rows is a sparse matrix format.  Each row is represented as follows

```rowNumber rowSize [binX1 value1, binX2 value2, ...]``` 

The first row in the matrix has ```rowNumber = 0```.  The highest row number possible is ```blockSize - 1```

* Dense

In dense matrix format all values including zero are output in row major order.  Allowance is made however for the 
possibility that only a sub-matrix of the block is populated, specifically that leading or trailing columns of 
the block might have no contacts (value = 0).   To account for this possibility the maximum column number within the block
which has at least 1 non-zero value is determined, which we will call ```binXMax```.   The width of the block can
then be determined and used to obtain the x and y coordinates in bin units for each value as follows.  

         w = (binXMax - binXOffset + 1);
         row = floor(i / w);
         col = i - row * w;
         binX = binXOffset + col;
         binY = binYOffset + row;




================================================
FILE: Juicer.README
================================================
# Juicer
Juicer is a platform for analyzing kilobase resolution Hi-C data. In this distribution,
we include the pipeline for generating Hi-C maps from fastq raw data files and command
line tools for feature annotation on the Hi-C maps.

----------------------
Example for Reviewers
----------------------
We've provided a step-by-step guide to showcase some of the features of
Juicer. If you run into problems, see below for more detailed documentation.
This example runs on Amazon Web Services, but you can install the pipeline
on any LSF, Univa Grid Engine, or SLURM cluster.

1. Make sure you're in the top-level directory, with this README and the
   Juicer_AWS.pem file. (NOTE: please do not share this .pem file with anyone)
2. You were given an anonymous IP address. At a command line prompt, type:
      ssh -i Juicer_AWS.pem ubuntu@<given IP address>
3. This will log you into an AWS instance that contains all the software
   needed to run the pipeline. Type
      cd /opt/juicer/work/
4. We will run the pipeline on a test dataset of a single chromosome of the primary+
   replicate map from (Rao+Huntley et al., 2014). Type:
      cd MBR19
5. Run the Juicer pipeline on the raw data, which is stored in the fastq
   directory:
      /opt/juicer/scripts/juicer.sh -g hg19 -s MboI
6. You will see a series of messages sending jobs to the cluster. Do not
   kill the script or close the server connection until you see:
      “(-: Finished adding all jobs... please wait while processing.”
7. At this point you can close the connection and come back later.
   To see the progress of the pipeline as it works, type:
      bjobs -w
7. Eventually the bjobs command will report “No unfinished job found”. Type:
      tail lsf.out
   You should see “(-: Pipeline successfully completed (-:”
8. Results are available in the aligned directory. The Hi-C maps are in
   inter.hic (for MAPQ > 0) and inter_30.hic (for MAPQ >= 30). The Hi-C maps
   can be loaded in Juicebox and explored. They can also be used for
   automatic feature annotation and to extract matrices at specific
   resolutions.
   These results also include automatic feature annotation. The output files include
   a genome-wide annotation of loops and, whenever possible, the CTCF motifs that anchor
   them (identified using the HiCCUPS algorithm). The files also include a genome-wide
   annotation of contact domains (identified using the Arrowhead algorithm). The formats
   of these files are described in the Juicebox tutorial online; both files can be loaded
   into Juicebox as a 2D annotation.
9. To download a file (e.g. inter.hic) from AWS to load into Juicebox, type:
      sftp -i Juicer_AWS.pem ubuntu@<given IP address>
      cd /opt/juicer/work/MBR19/aligned
      get inter.hic
      get inter_30.hic
      get ... (each of hiccups, apa, motifs, and arrowhead output files)
10. You can also run the pipeline on genome-wide dataset that is lower resolution. Type
      cd /opt/juicer/work/HIC003
   Then
      /opt/juicer/scripts/juicer.sh -g hg19 -s MboI
   Again the pipeline will run. The results will be available in the aligned directory.
   Because this is not a deeply sequenced map, loop lists and domain lists will not be
   produced.

See below for more documentation.

------------
Distribution
------------
The files included on the AWS distribution are in /opt/juicer and are:
*references        - Genome references
*restriction_sites - Restriction positions for combinations of reference genome and restriction enzymes
*scripts           - Juicer main scripts
*work              - Data samples
*hic_files         - Internal property file

In this zip file, we include the scripts for running Juicer on LSF,
Univa Grid Engine, and SLURM

/AWS - scripts for running pipeline and postprocessing on AWS
/UGER - scripts for running pipeline and postprocessing on UGER
/SLURM - scripts for running pipeline and postprocessing on SLURM
/juicebox_tools - source files for postprocessing algorithms
/Juicer_AWS.pem - ssh key to access anonymous AWS server

----------------------------------
Hardware and Software Requirements
----------------------------------
Juicer is a pipeline optimized for parallel computation on a cluster. Juicer
consists of two parts: the pipeline that creates Hi-C files from raw data,
and the post-processing command line tools.

*
* Cluster requirements:
*

Juicer requires the use of a cluster, with ideally >= 4 cores (min 1 core)
and >= 64 GB RAM (min 16 GB RAM)

Juicer currently works with the following resource management software:
- OpenLava (http://www.openlava.org/)
- LSF (http://www-03.ibm.com/systems/services/platformcomputing/lsf.html)
- SLURM (http://slurm.schedmd.com/download.html)
- GridEngine (Univa, etc. any flavor)

*
* Command line tool requirements:
*

The minimum software requirement to run Juicer is a working Java installation
(version >= 1.7) on Windows, Linux, and Mac OSX.  We recommend using the
latest Java version available, but please do not use the Java Beta Version.
Minimum system requirements for running Java can be found at
http://java.com/en/download/help/sysreq.xml

To download and install the latest Java Runtime Environment (JRE), please go
to http://www.java.com/download


*
* GNU CoreUtils
*

The latest version of GNU coreutils can be downloaded from
https://www.gnu.org/software/coreutils/manual/

*
* Burrows-Wheeler Aligner (BWA)
*

The latest version of BWA should be installed from
http://bio-bwa.sourceforge.net/


*
* CUDA (for HiCCUPS peak calling)
*

You must have an NVIDIA GPU to install CUDA
Instructions for installing the latest version of CUDA can be found
on the NVIDIA Developer site:
   https://developer.nvidia.com/cuda-downloads

The native libraries included with Juicer are compiled for CUDA 7.
Other versions of CUDA can be used, but you will need to download the
respective native libraries from
   http://www.jcuda.org/downloads/downloads.html

For best performance, use a dedicated GPU. You may also be able to obtain
access to GPU clusters through Amazon Web Services or a local research
institution.

*
* Java 1.7 or 1.8 JDK (for compiling from source files)
*

The instructions here are for the Java 1.8 JDK.
For Windows/Mac/Linux, the Java 1.8 JDK can be installed from here:
   http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(Alternative) For Ubuntu/LinuxMint
   http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/

*
* Apache Ant (for compiling from source files)
*

Mac
   Ant should be installed on most Macs. To verify installation via the
command prompt, type
       ant -version
   If Ant is not on your Mac, install it via homebrew. At the command prompt,
type
       brew update
       brew install ant
   You may need to install Homebrew (http://brew.sh/) on your machine
   See the following Stackoverflow post for more details:
       http://stackoverflow.com/questions/3222804/how-can-i-install-apache-ant-on-mac-os-x

Windows
   Installing Ant requires some minor changes to your system environment. Follow the instructions in this article:
       http://www.nczonline.net/blog/2012/04/12/how-to-install-apache-ant-on-windows/

Linux
   In the command prompt, type
       sudo apt-get install ant
or
       sudo yum install ant
depending on your package installer


--------------------------------
Compiling Jars from Source Files
--------------------------------
1. You should have Java 1.7 (or 1.8) JDK and Apache Ant installed on your system. See
   below for more information.
2. Go to the folder containing the Juicebox source files and edit the
   juicebox.properties file with the proper Java JDK Address.
3. Open the command line, navigate to the folder containing the build.xml file
   and type
       ant
   The process should take no more than a minute to build on most machines.
4. The jars are written to the directory out/.  You can change this by editing
   the build.xml file.

-------------
Documentation
-------------
We have extensive documentation below for how to use Juicer.

------------------------
Command Line Tools Usage
------------------------
To launch the command line tools, use the shell script “juicebox.sh” on Unix/MacOS
or type
   java -jar juicebox_tools.jar (command...) [flags...] <parameters...>

For HiCCUPS loop calling without the shell or bat script, you will need to
call:
   java -Xms512m -Xmx2048m -Djava.library.path=path/to/natives/
    -jar Juicebox_CLT.jar hiccups [flags...] <parameters...>
   where path/to/natives is the path to the native libraries used for Jcuda
   By default, these are located in the lib/jcuda folder.

In the command line tools, there are 4 functions:
> "apa" for conducting aggregate peak analysis
> "hiccups" for annotating loops
> "motifs" for finding CTCF motifs
> "arrowhead" for annotating contact domains

The "juicebox.sh” (Unix/MacOS) script can be used in place of the unwieldy
	"java -Djava.library.path=path/to/natives/ -jar juicebox_tools.jar"

---
APA
---
The "apa" command takes three required arguments and a number of optional
arguments.

apa [-n minval] [-x maxval] [-w window]  [-r resolution(s)] [-c chromosome(s)]
   [-k NONE/VC/VC_SQRT/KR] <hicFile(s)> <PeaksFile> <SaveFolder>

The required arguments are:

<hicFile(s)>: Address of hic file(s) which should end with ".hic". This is the file you will
   load into Juicebox. URLs or local addresses may be used. To sum multiple hic Files together,
   use the '+' symbol between the addresses (no whitespace between addresses)
<PeaksFile>: List of peaks in standard 2D feature format (chr1 x1 x2 chr2 y1 y2 color ...)
<SaveFolder>: Working directory where outputs will be saved

The optional arguments are:
   -n <int> minimum distance away from the diagonal. Used to filter peaks too close to the diagonal.
       Units are in terms of the provided resolution. (e.g. -n 30 @ resolution 5kB will filter loops
       within 30*(5000/sqrt(2)) units of the diagonal)
   -x <int> maximum distance away from the diagonal. Used to filter peaks too far from the diagonal.
       Units are in terms of the provided resolution. (e.g. -n 30 @ resolution 5kB will filter loops
       further than 30*(5000/sqrt(2)) units of the diagonal)
   -w <int> width of region to be aggregated around the specified loops (units of resolution)
   -r <int(s)> resolution for APA; multiple resolutions can be specified using commas (e.g. 5000,10000)
   -c <String(s)> Chromosome(s) on which APA will be run. The number/letter for the chromosome can be
       used with or without appending the "chr" string. Multiple chromosomes can be specified using
       commas (e.g. 1,chr2,X,chrY)
   -k <NONE/VC/VC_SQRT/KR> Normalizations (case sensitive) that can be selected. Generally, KR (Knight-Ruiz)
       balancing should be used when available.

Default settings of optional arguments:
   -n 30
   -x (infinity)
   -w 10
   -r 25000,10000
   -c (all chromosomes)
   -k KR

------------
APA Examples
------------

apa HIC006.hic all_loops.txt results1
> This command will run APA on HIC006 using loops from the all_loops files
> and save them under the results1 folder.

apa https://hicfiles.s3.amazonaws.com/hiseq/gm12878/in-situ/combined.hic
   all_loops.txt results1
> This command will run APA on the GM12878 mega map using loops from the all_loops
> files and save them under the results1 folder.

apa -r 10000,5000 -c 17,18 HIC006.hic+HIC007.hic all_loops.txt results
> This command will run APA at 50 kB resolution on chromosomes 17 and 18 for the
> summed HiC maps (HIC006 and HIC007) using loops from the all_loops files
> and save them under the results folder

-------
HiCCUPS
-------

hiccups [-m matrixSize] [-c chromosome(s)] [-r resolution(s)] [-k normalization (NONE/VC/VC_SQRT/KR)] [-f fdr] [-p peak width] [-i window]
   [-t thresholds] [-d centroid distances] <hicFile> <outputLoopsList>

The required arguments are:

<hicFile>: Address of hic file which should end with ".hic". This is the file you will
   load into Juicebox. URLs or local addresses may be used.

<outputLoopsList>: Final list of all loops found by HiCCUPS. Can be visualized directly in Juicebox as a 2D annotation.
   By default, various values critical to the HICCUPS algorithm are saved as attributes for each loop found. These can be
   disabled using the suppress flag below.

The optional arguments are:
   -m <int> Maximum size of the submatrix within the chromosome passed on to GPU (Must be an even number greater than 40
       to prevent issues from running the CUDA kernel). The upper limit will depend on your GPU. Dedicated GPUs
       should be able to use values such as 500, 1000, or 2048 without trouble. Integrated GPUs are unlikely to run
       sizes larger than 90 or 100. Matrix size will not effect the result, merely the time it takes for hiccups.
       Larger values (with a dedicated GPU) will run fastest.
   -c <String(s)> Chromosome(s) on which HiCCUPS will be run. The number/letter for the chromosome can be used with or
       without appending the "chr" string. Multiple chromosomes can be specified using commas (e.g. 1,chr2,X,chrY)
   -r <int(s)> Resolution(s) for which HiCCUPS will be run. Multiple resolutions can be specified using commas
       (e.g. 25000,10000,5000). Due to the nature of DNA looping, it is unlikely that loops will be found at
       lower resolutions (i.e. 50kB or 100kB)
       IMPORTANT: if multiple resolutions are used, the flags below can be configured so that different parameters are
       used for the different resolutions.
   -k <NONE/VC/VC_SQRT/KR> Normalizations (case sensitive) that can be selected. Generally, KR (Knight-Ruiz)
       balancing should be used when available.
   -f <int(s)> FDR values actually corresponding to max_q_val (i.e. for 1% FDR use 0.01, for 10%FDR use 0.1). Different
       FDR values can be used for each resolution using commas. (e.g "-r 5000,10000 -f 0.1,0.15" would run HiCCUPS at
       10% FDR for resolution 5000 and 15% FDR for resolution 10000)
   -p <int(s)> Peak width used for finding enriched pixels in HiCCUPS. Different peak widths can be used for each
       resolution using commas. (e.g "-r 5000,10000 -p 4,2" would run at peak width 4 for resolution 5000 and
       peak width 2 for resolution 10000)
   -i <int(s)> Window width used for finding enriched pixels in HiCCUPS. Different window widths can be used for each
       resolution using commas. (e.g "-r 5000,10000 -p 10,6" would run at window width 10 for resolution 5000 and
       window width 6 for resolution 10000)
   -t <floats> Thresholds for merging loop lists of different resolutions. Four values must be given, separated by
       commas (e.g. 0.02,1.5,1.75,2). These thresholds (in order) represent:
       > threshold allowed for sum of FDR values of the horizontal, vertical, donut, and bottom left filters
           (an accepted loop must stay below this threshold)
       > threshold ratio that both the horizontal and vertical filters must exceed
       > threshold ratio that both the donut and bottom left filters must exceed
       > threshold ratio that at least one of the donut and bottom left filters must exceed
   -d <ints> Distances used for merging nearby pixels to a centroid. Different distances can be used for each
       resolution using commas. (e.g "-r 5000,10000 -d 20000,21000” would merge pixels within 20kB of each
       other at 5kB resolution and within 21kB at 10kB resolution.

Defaults:

  Medium resolution maps:
   -m 512
   -c (all chromosomes)
   -r 10000
   -k KR
   -f .1
   -p 2
   -i 5
   -t 0.02,1.5,1.75,2
   -d 20000,20000,50000

  High resolution maps:
   -m 512
   -c (all chromosomes)
   -r 5000,10000
   -k KR
   -f .1,.1
   -p 4,2
   -i 7,5
   -t 0.02,1.5,1.75,2
   -d 20000,20000,50000

----------------
HiCCUPS Examples
----------------

hiccups HIC006.hic all_hiccups_loops
> This command will run HiCCUPS on HIC006 and save all found loops to the all_hiccups_loops files

hiccups -m 500 -r 5000,10000 -f 0.1,0.1 -p 4,2 -i 7,5 -d 20000,20000,0  -c 22  HIC006.hic all_hiccups_loops
> This command will run HiCCUPS on chromosome 22 of HIC006 at 5kB and 10kB resolution using the following values:
>> 5kB: fdr 10%, peak width 4, window width 7, and centroid distance 20kB
>> 10kB: fdr 10%, peak width 2, window width 5, and centroid distance 20kB
> The resulting loop list will be merged and saved as all_hiccups_loops
> Note that these are values used for generating the GM12878 loop list


-------
Arrowhead
-------

arrowhead [-c chromosome(s)] [-m matrix size] [-r resolution] [-k normalization (NONE/VC/VC_SQRT/KR)] " +
                "<hicFile(s)> <output_file> [feature_list] [control_list]

The required arguments are:

<hicFile(s)>: Address of hic file(s) which should end with ".hic". This is the file you will
   load into Juicebox. URLs or local addresses may be used. To sum multiple hic Files together,
   use the '+' symbol between the addresses (no whitespace between addresses)

<output_file>: Final list of all contact domains found by Arrowhead. Can be visualized directly in Juicebox
  as a 2D annotation.

-- NOTE -- If you want to find scores for a feature and control list, both must be provided:

[feature_list]: Feature list of loops/domains for which block scores are to be calculated
[control_list]: Control list of loops/domains for which block scores are to be calculated


The optional arguments are:

-c <String(s)> Chromosome(s) on which Arrowhead will be run. The number/letter for the chromosome can be used with or
  without appending the "chr" string. Multiple chromosomes can be specified using commas (e.g. 1,chr2,X,chrY)
-m <int> Size of the sliding window along the diagonal in which contact domains will be found. Must be an even
  number as (m/2) is used as the increment for the sliding window. (Default 2000)
-r <int> resolution for which Arrowhead will be run. Generally, 5kB (5000) or 10kB (10000)
  resolution is used depending on the depth of sequencing in the hic file(s).
-k <NONE/VC/VC_SQRT/KR> Normalizations (case sensitive) that can be selected. Generally, KR (Knight-Ruiz)
       balancing should be used when available.


Default settings of optional arguments:

  Medium resolution maps:
   -c (all chromosomes)
   -m 2000
   -r 10000
   -k KR

  High resolution maps:
   -c (all chromosomes)
   -m 2000
   -r 5000
   -k KR

----------------
Arrowhead Examples
----------------

NOTE: Arrowhead will choose appropriate defaults for hic files if no specifications are given

arrowhead https://hicfiles.s3.amazonaws.com/hiseq/ch12-lx-b-lymphoblasts/in-situ/combined_30.hic contact_domains_list
  This command will run Arrowhead on a mouse cell line HiC map (medium resolution) at resolution 10 kB and save all
  contact domains to the contact_domains_list file. These are the settings used to generate the official contact
  domain list on the ch12-lx-b-lymphoblast cell line.

arrowhead https://hicfiles.s3.amazonaws.com/hiseq/gm12878/in-situ/combined_30.hic contact_domains_list
  This command will run Arrowhead at resolution 5kB on the GM12878 HiC map (high resolution) and save all contact
  domains to the contact_domains_list file. These are the settings used to generate the official GM12878
  contact domain list.

-----------------------
Motif Finder
-----------------------

motifs <genomeID> <bed_file_dir> <looplist> [custom_global_motif_list]

The required arguments are:

<genomeID>: hg19 supported by default. For other genome assemblies, provide a 
  custom_global_motif_list in FIMO format.

<bed_file_dir> File path to a directory (e.g. ) which contains two folders: "unique" and
  "inferred". These folders should contain a combination of RAD21, SMC3, and CTCF BED files.
  By intersecting these 1D tracks, the strongest peaks will be identified. Unique motifs
  generally use a more stringent combination of BED files than inferred motifs.

<looplist>: List of peaks in standard 2D feature format (chr1 x1 x2 chr2 y1 y2 color ...)

-- NOTE -- If you want to use a custom list of potential motifs:

[custom_global_motif_list]: Motif list output using FIMO format can be used as an alternative
  to the internal motif list

-------------------
Motif Finder Examples
-------------------

Assuming the following file structure is present:
/path/to/local/bed/files/unique/CTCF.bed
/path/to/local/bed/files/unique/RAD21.bed
/path/to/local/bed/files/unique/SMC3.bed
/path/to/local/bed/files/inferred/CTCF.bed

motifs hg19 /path/to/local/bed/files /gm12878_hiccups_loops.txt
  This command will find motifs from the internal hg19 motif list for the loops in gm12878_hiccups_loops.txt
  and save them to gm12878_hiccups_loops_with_motifs.txt. The CTCF, RAD21, and SMC3 BED files will be used
  together (i.e. intersected) to find unique motifs. Just the CTCF track will be used to infer best motifs.

motifs hg19 /path/to/local/bed/files gm12878_hiccups_loops.txt hg_19_custom_motif_list.txt
  This command will find motifs from hg_19_custom_motif_list.txt for the loops in gm12878_hiccups_loops.txt
  and save them to gm12878_hiccups_loops_with_motifs.txt. The CTCF, RAD21, and SMC3 BED files will be used
  together (i.e. intersected) to find unique motifs. Just the CTCF track will be used to infer best motifs.


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2016 Aiden Lab

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
--------------
Breaking News!
--------------
This codebase is in the process of being split up to better support long-term maintenance and modular aspects of different tools
available. The new repositories will be:

- [JuiceboxGUI](https://github.com/aidenlab/juiceboxgui) for visualization of Hi-C maps with Juicebox Desktop and genome assembly correction with Assembly Tools.
- [HiCTools](https://github.com/aidenlab/hictools) for building and writing .hic files (Pre, Addnorm, and Statistics)
- [JuicerTools](https://github.com/aidenlab/juicertools) for downstream analysis of .hic files (HiCCUPS, Arrowhead, APA, etc.)
- [Java Straw](https://github.com/aidenlab/java-straw) to quickly read and stream data from .hic files into Java, and is used by the above repositories.

We also have new tools:

- [Straw](https://github.com/aidenlab/straw) to quickly read and stream data from .hic files into C++, python, R, and MATLAB.
- [POSSUMM](https://github.com/sa501428/EigenVector) for new C++ code to rapidly calculate A-B compartments (i.e.
  eigenvectors) for higher resolutions
- [EMT](https://github.com/sa501428/hic-emt) for upgrading older .hic files or making smaller .hic files for regions of
  interest.

--------------
About Juicebox
--------------
Juicebox is visualization software for Hi-C data. This distribution includes the source code for
Juicebox, <a href="https://github.com/theaidenlab/juicer/wiki/Download">Juicer Tools</a>,
and <a href="https://aidenlab.org/assembly/">Assembly Tools</a>
.  <a href="https://github.com/theaidenlab/juicebox/wiki/Download">Download Juicebox here</a>, or
use <a href="https://aidenlab.org/juicebox">Juicebox on the web</a>. Detailed documentation is
available <a href="https://github.com/theaidenlab/juicebox/wiki">on the wiki</a>. Instructions below pertain primarily
to usage of command line tools and the Juicebox jar files.

Juicebox can now be used to visualize and interactively (re)assemble genomes. Check out the Juicebox Assembly Tools
Module website https://aidenlab.org/assembly for more details on how to use Juicebox for assembly.

Juicebox was created by <a href="https://github.com/jrobinso">Jim Robinson</a>,
<a href="https://github.com/nchernia">Neva C. Durand</a>, and <a href="http://www.erez.com/">Erez Lieberman Aiden</a>. Past contributors include <a href="https://github.com/imachol">Ido Machol</a>, <a href="https://github.com/zgire">Zulkifl Gire</a>, <a href="https://github.com/mhoeger">Marie Hoeger</a>, <a href="https://github.com/asddf123789">Fanny Huang</a>, <a href="https://github.com/mikeehman">Nam Hee Kim</a>, <a href="https://github.com/nguyenkvi">Vi Nguyen</a>, <a href="https://github.com/bluejay9676">Jay Ryu</a>, <a href="https://github.com/musianat">Nathaniel T. Musial</a>, and <a href="https://github.com/ranganmostofa11">Ragib Mostofa</a>.

Ongoing development work is carried out by <a href="https://github.com/sa501428">Muhammad Saad Shamim</a>, <a href="https://github.com/nchernia">Neva C. Durand</a>, and <a href="https://github.com/dudcha">Olga Dudchenko</a>.

--------------
Questions?
--------------

For FAQs, or for asking new questions, please see our forum: <a href="https://aidenlab.org/forum.html">aidenlab.org/forum.html</a>.

--------------
IntelliJ Setup
--------------

Use IntelliJ IDEA (Community edition - free)

To set up in IDEA, have the Java SDK installed
then you'll point to it (IntelliJ has lots of documentation on this sort of thing).

* Then go to `VCS` -> `checkout from version control`.
* You'll need to do is be sure `*.sizes` is included as a file to be copied over to the class files.
  Set this up via IntelliJ `Preferences` -> `Compiler`. Add `?*.sizes` to the list of `Resource Patterns`.
* While there, also go to `Java Compiler` and put this into additional command line options: `-Xlint:all -target 1.7`
The former turns on all warnings, the latter gives some flexibility since some people haven't updated Java to 1.8 yet.
* Then go to `Run` -> `Edit Configurations`.
* With the `+` sign, add `Application`.
* You'll create two of these, one for the GUI (call it Juicebox GUI or whatever you want, really) and one for the CLT.
* Set the main class by clicking the little `...` button next to the text box for main class

        MainWindow.java is the main method class for the visualization/GUI portion of the software.
        HiCTools.java is the main method class for the analysis/CLT portion.

* For the GUI under VM Options:

        -Xmx2000m
        -Djnlp.loadMenu="https://hicfiles.tc4ga.com/juicebox.properties"

* For the CLT use

        -Xmx2000m

* Note that the `Xmx2000m` flag sets the maximum memory heap size to 2GB.
  Depending on your computer you might want more or less.
  Some tools will break if there's not enough memory and the file is too large,
  but don't worry about that for development; 2GB should be fine.
* One last note: be sure to `Commit and Push` when you commit files, it's hidden in the dropdown menu button in the
  commit window.

----------------------------------
Hardware and Software Requirements
----------------------------------
The minimum software requirement to run Juicebox is a working Java installation
(version > 1.6) on Windows, Linux, and Mac OSX.  We recommend using the latest
Java version available, but please do not use the Java Beta Version. Minimum
system requirements for running Java can be found at
https://java.com/en/download/help/sysreq.xml. To download and install the latest
Java Runtime Environment (JRE), please go to https://www.java.com/download.

We recommend having at least 2GB free RAM for the best user experience with
Juicebox.

To launch the Juicebox application from command line, type java -Xms512m -Xmx2048m -jar Juicebox.jar

Note: the -Xms512m flag sets the minimum memory heap size at 512 megabytes, and
the -Xmx2048m flag sets the maximum size at 2048 megabytes (2 gigabytes). These
values may be adjusted as appropriate for your machine.

-------------
Documentation
-------------
We have extensive documentation for how to use Juicebox at
https://github.com/theaidenlab/juicebox/wiki including a video, a Quick Start Guide, and a
detailed tutorial.

For using Juicebox to assemble genomes see https://www.aidenlab.org/assembly/.

------------------------
Command Line Tools Usage
------------------------

See the documentation at https://github.com/theaidenlab/juicer/wiki for information
on how to use the Juicer tools.

--------------------------------
Compiling Jars from Source Files
--------------------------------
1. You should have Java 1.8 JDK and Apache Ant installed on your system. See below for more information.
2. Go to the folder containing the Juicebox source files and edit the juicebox.properties file with the proper Java JDK Address.
3. Open the command line, navigate to the folder containing the build.xml file and type ant The process should take no more than a minute to build on most machines.
4. The jars are written to the directory out/. You can change this by editing the build.xml file.

* Installing Java 1.8 JDK

For Windows/Mac/Linux, the Java 1.8 JDK can be installed from here:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(Alternative) For Ubuntu/LinuxMint
https://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/

* Installing Apache Ant
  Mac Ant should be installed on most Macs. To verify installation via the command prompt, type ant -version If Ant is not on your Mac, install it via homebrew. At the command prompt, type
  brew update brew install ant You may need to install Homebrew (https://brew.sh/) on your machine See the following Stackoverflow post for more details:
  https://stackoverflow.com/questions/3222804/how-can-i-install-apache-ant-on-mac-os-x

Windows Installing Ant requires some minor changes to your system environment. Follow the instructions in this article:
https://www.nczonline.net/blog/2012/04/12/how-to-install-apache-ant-on-windows/

Linux In the command prompt, type sudo apt-get install ant or sudo yum install ant depending on your package installer


================================================
FILE: benchmark.sh
================================================
#!/bin/bash

### Benchmarks for DCIC
### To run, get juicebox_tools.jar and the test data files:
###   wget http://hicfiles.s3.amazonaws.com/internal/juicebox_tools/8.5.16/juicebox_tools.jar
###   wget ftp://ftp.ncbi.nlm.nih.gov/geo/samples/GSM1551nnn/GSM1551552/suppl/GSM1551552_HIC003_merged_nodups.txt.gz
###   wget https://s3.amazonaws.com/pkerp/data/matrix_test/chrX_5KB_bins.tsv.gz

### First benchmark

echo "Create index for data at 1MB resolution, all chromosomes"
time java -Xmx8g -jar juicebox_tools.jar pre -r 1000000 -v -q 1 GSM1551552_HIC003_merged_nodups.txt.gz HIC003_1MB.hic hg19

echo "Create index for data at all resolutions, all chromosomes"
time java -Xmx8g -jar juicebox_tools.jar pre -v -q 1 GSM1551552_HIC003_merged_nodups.txt.gz HIC003.hic hg19

echo "Querying: 256x256 / 2048x2048 / slices / single resolution no norm"
java -Xmx8g -jar juicebox_tools.jar benchmark HIC003_1MB.hic NONE

echo "Querying: 256x256 / 2048x2048 / slices / single resolution balanced norm"
java -Xmx8g -jar juicebox_tools.jar benchmark HIC003_1MB.hic KR

echo "Querying: 256x256 / 2048x2048 / slices / multiple resolution no norm"
java -Xmx8g -jar juicebox_tools.jar benchmark HIC003.hic NONE

echo "Querying: 256x256 / 2048x2048 / slices / multiple resolution balanced norm"
java -Xmx8g -jar juicebox_tools.jar benchmark HIC003.hic KR

# repeated query without loading index of 2048x2048
echo "Query without loading index 2048x2048....ten times"
time ./straw KR HIC003.hic 1:20480000:40960000 1:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 2:20480000:40960000 2:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 3:20480000:40960000 3:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 4:20480000:40960000 4:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 5:20480000:40960000 5:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 6:20480000:40960000 6:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 7:20480000:40960000 7:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 8:20480000:40960000 8:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 9:20480000:40960000 9:20480000:40960000 BP 10000 > tmp.txt 
time ./straw KR HIC003.hic 10:20480000:40960000 10:20480000:40960000 BP 10000 > tmp.txt 

### Second benchmark

#transform to valid-pairs format with scores
#gunzip -c chrX_5KB_bins.tsv.gz | awk '{print 0,"X",$1*5000,0,0,"X",$2*5000,1,$3}' | gzip > chrX_5KB.txt.gz

echo "Create index for binned data"
time java -Xmx8g -jar juicebox_tools.jar pre -r 5000 -c X -v -d chrX_5KB.txt.gz chrX_5KB.hic hg19

echo "Querying: 256x256 / 2048x2048 / slices / no norm"
java -Xmx8g -jar juicebox_tools.jar -v benchmark chrX_5KB.hic NONE X

echo "Querying: 256x256 / 2048x2048 / slices / balanced norm"
java -Xmx8g -jar juicebox_tools.jar -v benchmark chrX_5KB.hic KR X

echo "Binary index to text"
time java -Xmx8g -jar juicebox_tools.jar dump observed NONE chrX_5KB.hic X X BP 5000 chrX_5KB_out.txt


================================================
FILE: build.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ The MIT License (MIT)
  ~
  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
  ~
  ~ Permission is hereby granted, free of charge, to any person obtaining a copy
  ~ of this software and associated documentation files (the "Software"), to deal
  ~ in the Software without restriction, including without limitation the rights
  ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the Software is
  ~ furnished to do so, subject to the following conditions:
  ~
  ~ The above copyright notice and this permission notice shall be included in
  ~ all copies or substantial portions of the Software.
  ~
  ~  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ~  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ~  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ~  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ~  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ~  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ~  THE SOFTWARE.
  -->

<project name="juicebox" default="all">


    <property file="juicebox.properties"/>
    <!-- Uncomment the following property if no tests compilation is needed -->
    <!--
    <property name="skip.tests" value="true"/>
     -->

    <!-- Compiler options -->

    <property name="compiler.debug" value="on"/>
    <property name="compiler.generate.no.warnings" value="off"/>
    <property name="compiler.args" value="-Xlint:all -target 1.8"/>
    <property name="compiler.max.memory" value="700m"/>
    <patternset id="ignored.files">
        <exclude name="**/*.hprof/**"/>
        <exclude name="**/*.pyc/**"/>
        <exclude name="**/*.pyo/**"/>
        <exclude name="**/*.rbc/**"/>
        <exclude name="**/*~/**"/>
        <exclude name="**/.DS_Store/**"/>
        <exclude name="**/.bundle/**"/>
        <exclude name="**/.git/**"/>
        <exclude name="**/.hg/**"/>
        <exclude name="**/.svn/**"/>
        <exclude name="**/.tox/**"/>
        <exclude name="**/CVS/**"/>
        <exclude name="**/RCS/**"/>
        <exclude name="**/SCCS/**"/>
        <exclude name="**/__pycache__/**"/>
        <exclude name="**/_svn/**"/>
        <exclude name="**/rcs/**"/>
        <exclude name="**/vssver.scc/**"/>
        <exclude name="**/vssver2.scc/**"/>
    </patternset>
    <patternset id="library.patterns">
        <include name="*.zip"/>
        <include name="*.apk"/>
        <include name="*.war"/>
        <include name="*.egg"/>
        <include name="*.ear"/>
        <include name="*.ane"/>
        <include name="*.swc"/>
        <include name="*.jar"/>
    </patternset>
    <patternset id="compiler.resources">
        <include name="**/?*.properties"/>
        <include name="**/?*.xml"/>
        <include name="**/?*.gif"/>
        <include name="**/?*.png"/>
        <include name="**/?*.jpeg"/>
        <include name="**/?*.jpg"/>
        <include name="**/?*.html"/>
        <include name="**/?*.dtd"/>
        <include name="**/?*.tld"/>
        <include name="**/?*.ftl"/>
        <include name="**/?*.txt"/>
        <include name="**/?*.sizes"/>
        <include name="**/?*.cu"/>
    </patternset>

    <!-- JDK definitions -->

    <property name="jdk.bin.1.8" value="${jdk.home.1.8}/bin"/>
    <path id="jdk.classpath.1.8">
        <fileset dir="${jdk.home.1.8}">
            <include name="lib/ant-javafx.jar"/>
            <include name="lib/dt.jar"/>
            <include name="lib/javafx-mx.jar"/>
            <include name="lib/jconsole.jar"/>
            <include name="lib/sa-jdi.jar"/>
            <include name="lib/tools.jar"/>
            <include name="jre/lib/charsets.jar"/>
            <include name="jre/lib/deploy.jar"/>
            <include name="jre/lib/javaws.jar"/>
            <include name="jre/lib/jce.jar"/>
            <include name="jre/lib/jfr.jar"/>
            <include name="jre/lib/jfxswt.jar"/>
            <include name="jre/lib/jsse.jar"/>
            <include name="jre/lib/management-agent.jar"/>
            <include name="jre/lib/plugin.jar"/>
            <include name="jre/lib/resources.jar"/>
            <include name="jre/lib/rt.jar"/>
            <include name="jre/lib/ext/cldrdata.jar"/>
            <include name="jre/lib/ext/dnsns.jar"/>
            <include name="jre/lib/ext/jfxrt.jar"/>
            <include name="jre/lib/ext/localedata.jar"/>
            <include name="jre/lib/ext/nashorn.jar"/>
            <include name="jre/lib/ext/sunec.jar"/>
            <include name="jre/lib/ext/sunjce_provider.jar"/>
            <include name="jre/lib/ext/sunpkcs11.jar"/>
            <include name="jre/lib/ext/zipfs.jar"/>
        </fileset>
    </path>

    <property name="project.jdk.home" value="${jdk.home.1.8}"/>
    <property name="project.jdk.bin" value="${jdk.bin.1.8}"/>
    <property name="project.jdk.classpath" value="jdk.classpath.1.8"/>


    <!-- Project Libraries -->

    <path id="library.broadinstitute.classpath">
        <fileset dir="${basedir}/lib/broadinstitute">
            <patternset refid="library.patterns"/>
        </fileset>
    </path>

    <path id="library.general.classpath">
        <fileset dir="${basedir}/lib/general">
            <patternset refid="library.patterns"/>
        </fileset>
    </path>

    <path id="library.jcuda.classpath">
        <fileset dir="${basedir}/lib/jcuda">
            <patternset refid="library.patterns"/>
        </fileset>
    </path>

    <path id="library.kotlin.classpath">
        <fileset dir="${basedir}/lib/kotlin">
            <patternset refid="library.patterns"/>
        </fileset>
    </path>

    <path id="library.math3.classpath">
        <pathelement location="${basedir}/lib/general/commons-math3-3.6.1.jar"/>
    </path>

    <path id="library.jsi1.1.classpath">
        <pathelement location="${basedir}/lib/general/jsi1.1.jar"/>
    </path>



    <!-- Modules -->


    <!-- Module Juicebox -->

    <dirname property="module.juicebox.basedir" file="${ant.file}"/>


    <property name="module.jdk.home.juicebox" value="${project.jdk.home}"/>
    <property name="module.jdk.bin.juicebox" value="${project.jdk.bin}"/>
    <property name="module.jdk.classpath.juicebox" value="${project.jdk.classpath}"/>

    <property name="compiler.args.juicebox" value="-encoding UTF-8 -source 1.8  ${compiler.args}"/>

    <property name="juicebox.output.dir" value="${module.juicebox.basedir}/out/production/Juicebox"/>
    <property name="juicebox.testoutput.dir" value="${module.juicebox.basedir}/out/test/Juicebox"/>

    <path id="juicebox.module.bootclasspath">
        <!-- Paths to be included in compilation bootclasspath -->
        <pathelement location="${jdk.home.1.8}/jre/lib"/>
    </path>

    <path id="juicebox.module.production.classpath">
        <path refid="${module.jdk.classpath.juicebox}"/>
        <path refid="library.broadinstitute.classpath"/>
        <path refid="library.jcuda.classpath"/>
        <path refid="library.kotlin.classpath"/>
        <path refid="library.general.classpath"/>
        <path refid="library.jsi1.1.classpath"/>
        <path refid="library.math3.classpath"/>
    </path>

    <path id="juicebox.runtime.production.module.classpath">
        <pathelement location="${juicebox.output.dir}"/>
        <path refid="library.broadinstitute.classpath"/>
        <path refid="library.jcuda.classpath"/>
        <path refid="library.kotlin.classpath"/>
        <path refid="library.general.classpath"/>
        <path refid="library.jsi1.1.classpath"/>
        <path refid="library.math3.classpath"/>
    </path>

    <path id="juicebox.module.classpath">
        <path refid="${module.jdk.classpath.juicebox}"/>
        <pathelement location="${juicebox.output.dir}"/>
        <path refid="library.broadinstitute.classpath"/>
        <path refid="library.jcuda.classpath"/>
        <path refid="library.kotlin.classpath"/>
        <path refid="library.general.classpath"/>
        <path refid="library.jsi1.1.classpath"/>
        <path refid="library.math3.classpath"/>
    </path>

    <path id="juicebox.runtime.module.classpath">
        <pathelement location="${juicebox.testoutput.dir}"/>
        <pathelement location="${juicebox.output.dir}"/>
        <path refid="library.broadinstitute.classpath"/>
        <path refid="library.jcuda.classpath"/>
        <path refid="library.kotlin.classpath"/>
        <path refid="library.general.classpath"/>
        <path refid="library.jsi1.1.classpath"/>
        <path refid="library.math3.classpath"/>
    </path>


    <patternset id="excluded.from.module.juicebox">
        <patternset refid="ignored.files"/>
    </patternset>

    <patternset id="excluded.from.compilation.juicebox">
        <patternset refid="excluded.from.module.juicebox"/>
    </patternset>

    <path id="juicebox.module.sourcepath">
        <dirset dir="${module.juicebox.basedir}">
            <include name="src"/>
        </dirset>
    </path>


    <target name="compile.module.juicebox" depends="compile.module.juicebox.production,compile.module.juicebox.tests"
            description="Compile module Juicebox"/>

    <target name="compile.module.juicebox.production" description="Compile module Juicebox; production classes">
        <mkdir dir="${juicebox.output.dir}"/>
        <javac includeantruntime="false" destdir="${juicebox.output.dir}" debug="${compiler.debug}"
               nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true"
               executable="${module.jdk.bin.juicebox}/javac">
            <compilerarg line="${compiler.args.juicebox}"/>
            <bootclasspath refid="juicebox.module.bootclasspath"/>
            <classpath refid="juicebox.module.production.classpath"/>
            <src refid="juicebox.module.sourcepath"/>
            <patternset refid="excluded.from.compilation.juicebox"/>
        </javac>

        <copy todir="${juicebox.output.dir}">
            <fileset dir="${module.juicebox.basedir}/src">
                <patternset refid="compiler.resources"/>
                <type type="file"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.module.juicebox.tests" depends="compile.module.juicebox.production"
            description="compile module Juicebox; test classes" unless="skip.tests"/>

    <target name="clean.module.juicebox" description="cleanup module">
        <delete dir="${juicebox.output.dir}"/>
        <delete dir="${juicebox.testoutput.dir}"/>
    </target>

    <target name="init" description="Build initialization">
        <!-- Perform any build initialization in this target -->
    </target>

    <target name="clean" depends="clean.module.juicebox" description="cleanup all"/>

    <target name="build.modules" depends="init, clean, compile.module.juicebox" description="build all modules"/>

    <target name="init.artifacts">
        <property name="artifacts.temp.dir" value="${basedir}/__artifacts_temp"/>
        <property name="artifact.output.juicebox:jar" value="${basedir}/out/artifacts/Juicebox_jar"/>
        <property name="artifact.output.juicer_tools:jar" value="${basedir}/out/artifacts/juicer_tools_jar"/>
        <mkdir dir="${artifacts.temp.dir}"/>
        <property name="temp.jar.path.Juicebox.jar" value="${artifacts.temp.dir}/Juicebox.jar"/>
        <property name="temp.jar.path.juicer_tools.jar" value="${artifacts.temp.dir}/1/juicer_tools.jar"/>
        <mkdir dir="${artifacts.temp.dir}/1"/>
    </target>

    <target name="artifact.juicebox:jar" depends="init.artifacts, compile.module.juicebox"
            description="Build &#39;Juicebox:jar&#39; artifact">
        <property name="artifact.temp.output.juicebox:jar" value="${artifacts.temp.dir}/Juicebox_jar"/>
        <mkdir dir="${artifact.temp.output.juicebox:jar}"/>
        <jar destfile="${temp.jar.path.Juicebox.jar}" duplicate="preserve"
             manifest="${basedir}/src/resources/manifests/juicebox_jar/META-INF/MANIFEST.MF">
            <zipfileset file="${basedir}/src/resources/manifests/juicebox_jar/META-INF/MANIFEST.MF" prefix="META-INF"/>
            <zipfileset dir="${juicebox.output.dir}"/>
            <zipfileset src="${basedir}/lib/general/jsi1.1.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/broadinstitute/igv.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/broadinstitute/htsjdk-1.139.jar"/>
            <zipfileset src="${basedir}/lib/broadinstitute/log4j-core-2.11.0.jar"
			excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-0.8.0.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-linux-ppc_64.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-linux-x86_64.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-apple-x86_64.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcudaUtils-0.0.4.jar"/>
            <zipfileset src="${basedir}/lib/general/guava-18.0.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-reflect-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-reflect.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk7-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk7.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk8-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk8.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-test-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-test.jar"/>
            <zipfileset src="${basedir}/lib/general/VectorGraphics2D-0.11.jar"/>
            <zipfileset src="${basedir}/lib/general/jargs.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/general/jfreechart-1.0.19.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>

        </jar>
        <copy file="${temp.jar.path.Juicebox.jar}" tofile="${artifact.temp.output.juicebox:jar}/Juicebox.jar"/>
    </target>

    <target name="artifact.juicer_tools:jar" depends="init.artifacts, compile.module.juicebox"
            description="Build &#39;juicer_tools:jar&#39; artifact">
        <property name="artifact.temp.output.juicer_tools:jar" value="${artifacts.temp.dir}/juicer_tools_jar"/>
        <mkdir dir="${artifact.temp.output.juicer_tools:jar}"/>
        <jar destfile="${temp.jar.path.juicer_tools.jar}" duplicate="preserve"
             manifest="${basedir}/src/resources/manifests/juicer_tools_jar/META-INF/MANIFEST.MF">
            <zipfileset file="${basedir}/src/resources/manifests/juicer_tools_jar/META-INF/MANIFEST.MF"
                        prefix="META-INF"/>
            <zipfileset dir="${juicebox.output.dir}"/>
            <zipfileset src="${basedir}/lib/general/jsi1.1.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/general/commons-math3-3.6.1.jar"/>
            <zipfileset src="${basedir}/lib/general/guava-18.0.jar"/>
            <zipfileset src="${basedir}/lib/general/VectorGraphics2D-0.11.jar"/>
            <zipfileset src="${basedir}/lib/broadinstitute/igv.jar"
                        excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/broadinstitute/htsjdk-1.139.jar"/>
            <zipfileset src="${basedir}/lib/broadinstitute/log4j-core-2.11.0.jar"
			excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-0.8.0.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-linux-ppc_64.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-linux-x86_64.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-apple-x86_64.jar"/>
            <zipfileset src="${basedir}/lib/jcuda/jcudaUtils-0.0.4.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-reflect-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-reflect.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk7-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk7.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk8-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-jdk8.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-stdlib.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-test-sources.jar"/>
	    <zipfileset src="${basedir}/lib/kotlin/kotlin-test.jar"/>
            <zipfileset src="${basedir}/lib/general/jargs.jar" excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>
            <zipfileset src="${basedir}/lib/general/jfreechart-1.0.19.jar"
                        excludes="META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA"/>

        </jar>
        <copy file="${temp.jar.path.juicer_tools.jar}"
              tofile="${artifact.temp.output.juicer_tools:jar}/juicer_tools.jar"/>
    </target>

    <target name="sign">
        <signjar
                alias="${sign.alias}" keystore="${sign.keystore}" storepass="${sign.storepass}"
                tsaurl="http://timestamp.digicert.com">
            <path>
                <fileset dir="${basedir}/out" includes="**/*.jar"/>
            </path>
        </signjar>
    </target>

    <target name="build.all.artifacts" depends="artifact.juicebox:jar, artifact.juicer_tools:jar"
            description="Build all artifacts">
        <mkdir dir="${artifact.output.juicebox:jar}"/>
        <copy todir="${artifact.output.juicebox:jar}">
            <fileset dir="${artifact.temp.output.juicebox:jar}"/>
        </copy>
        <mkdir dir="${artifact.output.juicer_tools:jar}"/>
        <copy todir="${artifact.output.juicer_tools:jar}">
            <fileset dir="${artifact.temp.output.juicer_tools:jar}"/>
        </copy>

        <!-- Delete temporary files -->
        <delete dir="${artifacts.temp.dir}"/>
    </target>

    <target name="juicer_tools" depends="artifact.juicer_tools:jar" description="Build juicer_tools artifact">
        <mkdir dir="${artifact.output.juicer_tools:jar}"/>
        <copy todir="${artifact.output.juicer_tools:jar}">
            <fileset dir="${artifact.temp.output.juicer_tools:jar}"/>
        </copy>

        <!-- Delete temporary files -->
        <delete dir="${artifacts.temp.dir}"/>
    </target>

    <target name="all" depends="build.modules, build.all.artifacts" description="build all"/>

    <taskdef name="jarbundler"
             classname="com.ultramixer.jarbundler.JarBundler"
             classpath="lib/jarbundler-core-3.3.0.jar"/>

    <target name="bundle" depends="init.artifacts">
        <property name="version" value="1.0 (1)"/>
        <jarbundler dir="${artifact.output.juicebox:jar}"
                    name="Juicebox"
                    mainclass="juicebox.MainWindow"
                    icon="JuiceboxIcon.icns"
                    jar="${artifact.output.juicebox:jar}/Juicebox.jar"
		    stubfile="lib/universalJavaApplicationStub"
		    useJavaXKey="true"
		    jvmversion="1.8"
		    version="${version}"
		    highResolutionCapable="true"
		    bundleid="org.aidenlab.Juicebox"
		    copyright="©2014, Broad Institute and Aiden Lab"
		    vmoptions="-Xms5g -Xmx10g -d64">

        </jarbundler>
        <delete dir="${artifacts.temp.dir}"/>
    </target>

    <target name="bundlebcm" depends="init.artifacts">
        <property name="version" value="1.0 (1)"/>
        <jarbundler dir="${artifact.output.juicebox:jar}"
                    name="Juicebox"
                    mainclass="juicebox.MainWindow"
                    icon="JuiceboxIcon.icns"
                    jar="${artifact.output.juicebox:jar}/Juicebox.jar"
                    stubfile="lib/universalJavaApplicationStub"
                    useJavaXKey="true"
                    jvmversion="1.8"
                    version="${version}"
                    highResolutionCapable="true"
                    copyright="©2014, Broad Institute and Aiden Lab"
                    vmoptions="-Xms5g -Xmx10g -d64">

        </jarbundler>
        <delete dir="${artifacts.temp.dir}"/>
    </target>


</project>


================================================
FILE: data/inter.hic
================================================
[File too large to display: 40.0 MB]

================================================
FILE: internalREADME.md
================================================
--------------------
Quick Start
--------------------
1. Run `package.sh <versionNum>`
versionNum lives in src/juicebox/HiCGlobals.
This will compile, sign, bundle, and create the DMG and EXE.
You will be prompted to change the EXE with a HEX editor, just follow
the instructions.
2. The new executables will be in out/artifacts/Juicebox_jar
3. move old jars, EXEs, and DMGs, update CHANGES in important_jars

------------------
Previous version
------------------
```
rm -r out
ant
ant sign
ant bundle
cd l4j
~/Downloads/launch4j/launch4j config_bcm.xml 
cd ../out/artifacts/Juicebox_jar/
codesign -s "Erez Aiden" Juicebox.app --deep
hdiutil create -srcfolder Juicebox.app Juicebox.dmg
cd ~/Dropbox\ \(Lab\ at\ Large\)/important_jars/
# move old jars, EXEs, and DMGs, update CHANGES
emacs -nw CHANGES
# XXXXXX should be date when file written i.e. 20170103
mv Juicebox_BCM.dmg Juicebox_BCMXXXXXXXX.dmg
mv Juicebox_BCM.exe Juicebox_BCMXXXXXXXX.exe
mv Juicebox.jar JuiceboxXXXXXXXX.jar
mv ~/Dropbox/Research/JuiceboxDev/l4j/Juicebox.exe Juicebox_BCM.exe
mv ~/Dropbox/Research/JuiceboxDev/out/artifacts/Juicebox_jar/Juicebox.dmg Juicebox_BCM.dmg
mv ~/Dropbox/Research/JuiceboxDev/out/artifacts/Juicebox_jar/Juicebox.jar Juicebox.jar
mv ~/Dropbox/Research/JuiceboxDev/out/artifacts/Juicebox_clt_jar/Juicebox.jar juicebox_tools.8.0.jar
```


--------------------
Creating Executables 
--------------------

0. Compile Jars from Source Files as described in Juicebox README.

* EXE Build (Windows)

1. Download the launch4j tarball 
   <https://sourceforge.net/projects/launch4j/files/launch4j-3/3.8/> and unzip it.
2. Run 

> ./launch4j/launch4j config.xml

Modify the config.xml file to set the properties file and other parameters.

3. Signing is complicated. You'll need openssl and osslsigncode and will need to do a two step procedure.

  - openssl pkcs12 -in ~/Dropbox\ \(Lab\ at\ Large\)/important_jars/ErezSLieberman.p12 -nocerts -nodes -out certificate.pem
    (You can save this certificate and use it later, just don't forget your password)
  - Sign for the first time
     osslsigncode sign -certs ~/Dropbox\ \(Lab\ at\ Large\)/important_jars/erez_s_lieberman.pem -key certificate.pem \
     -askpass -n "Juicebox" -i http://aidenlab.org/ -in ~/Dropbox\ \(Lab\ at\ Large\)/important_jars/Juicebox.exe \
     -out signed.exe
  - Find the size of the signature in bytes i.e. sizeInBytesOf(signed.exe) - sizeInBytesOf(Juicebox.exe)
    You can use ls -l for this
  - Edit Juicebox.exe with favorite HEX editor to change last two bytes of exe i.e. the jar i.e. the zip end of 
    central directory to the size using littleendian byte order and save.  File size should remain the same.
    For example, if the size difference is 4384, the hex number is 0x1120; in Little Endian, this will be 20 11
  - Sign the modified Juicebox.exe using above osslsigncode again
   

* .app Build (Mac)

1. After making jars as described above, type 

> ant bundle

to make the Juicebox.app executable. 

2. Sign the app with codesign -s "Erez Aiden" Juicebox.app --deep
You must have things appropriately installed in your keychain.  Follow the instructions on the Apple Developer website.  Our csr and cer are in the Dropbox under important_jars but I'm not sure exactly how you would add both the csr and the cer to KeyChain so you might just have to do it from scratch (this is what I did, eventually).  Look for the ones created Wed Dec 23 2015

3. hdiutil create -size 210m -srcfolder Juicebox.app Juicebox.dmg
Size depends on what the size of your .app file is, make it big enough so this command doesn't fail.  You can also do Disk Utility -> New Image From Folder and choose Juicebox.app.

4. Modify the code under the bundle taskdef in the build.xml file to change properties and other parameters.

--------------------
Steps for creating Public Friendly Version
--------------------

1. Create a new branch
2. Remove sensitive chrom.sizes. First, delete all contents of the chrom.sizes folder (/src/juicebox/tools/chrom.sizes). Next, go to the top level directory. You will see a compressed folder called PublicFriendlyChromSizes.zip. Extract its contents and copy them into the chrom.sizes folder which was just emptied. Recompile the project in IntelliJ.
3. Delete anything under development (e.g. clustering, APAvsDistance, etc.). These should all be in the dev folder, so it should usually be sufficient to just delete it and all its contents (src/juicebox/tools/dev). After deleting the folder, compile in IntelliJ and fix all the bugs/warnings (i.e. remove any calls to the dev/private folder). This may be tricky for some parts (especially the restriction enzymes section) See https://github.com/theaidenlab/JuiceboxDev/commit/fd930f5fac9af3df9f44cd87d4fc31e8df5d3ac3 for an example of what was deleted. (Aside: Any new sensitive project should be created in this dev directory to simplify this entire process for us.)
4. Remove any mention of assembly/sensitive projects (should have technically been taken care on in step 3, but a quick search for the word assembly in the whole project is easy to do)
5. Change version number as appropriate - HiCGlobals, for display purposes only.

Note this is only in terms of jars/executables.
For actual code release / open-sourcing, we need to wipe other private files, especially the .git histories, hidden files, internalREADME (i.e. me!), etc.

--------------------
Building a new IGV jar for use in Juicebox
-------------------
Two problems with IGV jar: signatures and classpaths in the MANIFEST.  If it was just the first, it would be a one-liner.  Instead: 
1 - Unzip IGV jar (be sure to get the "snapshot" build, currently at https://data.broadinstitute.org/igv/projects/snapshot/igv.jar )
```
mkdir tmp
mv igv.jar tmp
cd tmp
unzip igv.jar
```
2 - Remove META-INF/*.SF META-INF/*.DSA META-INF/*.RSA
```
rm META-INF/*.SF META-INF/*.DSA META-INF/*.RSA
```
3 - Go into the META-INF/MANIFEST file with your favorite editor and remove the Class-Path lines.
4 - Rezip the jar
```
rm igv.jar
jar cvf igv.jar ./*
```

--------------------
Building Different CUDA versions
--------------------
​​Right now JuiceboxDev (assuming what's in the repo now) is defaulting to 7.0

CUDA 7.0 is used on AWS
CUDA 7.5 is on most of our internal machines (Hailmary)
CUDA 8.0 is used on Adam; linux-x64
CUDA 8.0 is used on Rice; linux-ppc
CUDA 8.0 for Mac; apple-x86


To change from 7.0 to 7.5, the build.xml and 
libraries for compilation need to be changed

---build.xml changes

Change the following line (has x2 occurrences, one for each jar build)

`<zipfileset src="${basedir}/lib/jcuda/jcuda-0.7.0.jar"/>`
to
`<zipfileset src="${basedir}/lib/jcuda/jcuda-0.7.5.jar"/>`
or
`<zipfileset src="${basedir}/lib/jcuda/jcuda-0.8.0.jar"/>`
and for Power (Rice) will need
`<zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-linux-ppc_64.jar"/>`
and otherwise
`<zipfileset src="${basedir}/lib/jcuda/jcuda-natives-0.8.0-linux-x86_64.jar"/>`

---jcuda lib changes

- Go to ~/lib/jcuda
- Delete all the non .zip files
- Unzip Archive.JCuda.0.7.5.zip
  this creates a new folder
- Move everything in this newly made folder to the folder above it
  (e.g. path should be ~/lib/jcuda/jcuda-0.7.5.jar, NOT ~/lib/jcuda/Archive.JCuda.0.7.5/jcuda-0.7.0.jar)
- For JCuda 0.8, you should define if this is for x86 or ppc (Power8) architecture and add those natives: jcuda-natives-0.8.0-linux-ppc_64.jar or  jcuda-natives-0.8.0-linux-x86_64.jar

The jars are really the ones that matter, but I think it's easier to update everything here (especially if testing GPU stuff from within IntelliJ)

​And now it should be fine to build via ant​



================================================
FILE: juicebox.properties
================================================
#
# The MIT License (MIT)
#
# Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#  THE SOFTWARE.
#
jdk.home.1.8=/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/
sign.keystore=/Users/nchernia/Dropbox\ \(Lab\ at\ Large\)/important_jars//ErezSLieberman.jks
sign.storepass=juicebox
sign.alias=server



================================================
FILE: l4j/config.xml
================================================
<!--
  ~ The MIT License (MIT)
  ~
  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
  ~
  ~ Permission is hereby granted, free of charge, to any person obtaining a copy
  ~ of this software and associated documentation files (the "Software"), to deal
  ~ in the Software without restriction, including without limitation the rights
  ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the Software is
  ~ furnished to do so, subject to the following conditions:
  ~
  ~ The above copyright notice and this permission notice shall be included in
  ~ all copies or substantial portions of the Software.
  ~
  ~  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ~  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ~  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ~  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ~  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ~  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ~  THE SOFTWARE.
  -->

<launch4jConfig>
    <headerType>gui</headerType>
    <jar>../out/artifacts/Juicebox_jar/Juicebox.jar</jar>
    <outfile>Juicebox.exe</outfile>
    <errTitle>Juicebox</errTitle>
    <chdir>.</chdir>
    <icon>Juicebox.ico</icon>
    <restartOnCrash>true</restartOnCrash>
    <jre>
        <minVersion>1.7.0</minVersion>
        <runtimeBits>64</runtimeBits>
        <initialHeapSize>5000</initialHeapSize>
        <maxHeapSize>10000</maxHeapSize>
    </jre>
    <splash>
        <file>juicebox.bmp</file>
        <waitForWindow>true</waitForWindow>
        <timeout>60</timeout>
        <timeoutErr>true</timeoutErr>
    </splash>
</launch4jConfig>


================================================
FILE: l4j/config_bcm.xml
================================================
<!--
  ~ The MIT License (MIT)
  ~
  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
  ~
  ~ Permission is hereby granted, free of charge, to any person obtaining a copy
  ~ of this software and associated documentation files (the "Software"), to deal
  ~ in the Software without restriction, including without limitation the rights
  ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the Software is
  ~ furnished to do so, subject to the following conditions:
  ~
  ~ The above copyright notice and this permission notice shall be included in
  ~ all copies or substantial portions of the Software.
  ~
  ~  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ~  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ~  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ~  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ~  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ~  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ~  THE SOFTWARE.
  -->

<launch4jConfig>
    <headerType>gui</headerType>
    <jar>../out/artifacts/Juicebox_jar/Juicebox.jar</jar>
    <outfile>Juicebox.exe</outfile>
    <errTitle>Juicebox</errTitle>
    <chdir>.</chdir>
    <icon>Juicebox.ico</icon>
    <restartOnCrash>true</restartOnCrash>
    <jre>
        <minVersion>1.7.0</minVersion>
        <runtimeBits>64</runtimeBits>
        <initialHeapSize>5000</initialHeapSize>
        <maxHeapSize>10000</maxHeapSize>
        <opt>-Djnlp.loadMenu="http://hicfiles.s3.amazonaws.com/internal/hiculfite.properties"</opt>
    </jre>
    <splash>
        <file>juicebox.bmp</file>
        <waitForWindow>true</waitForWindow>
        <timeout>60</timeout>
        <timeoutErr>true</timeoutErr>
    </splash>
</launch4jConfig>


================================================
FILE: l4j/config_broad.xml
================================================
<!--
  ~ The MIT License (MIT)
  ~
  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
  ~
  ~ Permission is hereby granted, free of charge, to any person obtaining a copy
  ~ of this software and associated documentation files (the "Software"), to deal
  ~ in the Software without restriction, including without limitation the rights
  ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the Software is
  ~ furnished to do so, subject to the following conditions:
  ~
  ~ The above copyright notice and this permission notice shall be included in
  ~ all copies or substantial portions of the Software.
  ~
  ~  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ~  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ~  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ~  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ~  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ~  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ~  THE SOFTWARE.
  -->

<launch4jConfig>
    <headerType>gui</headerType>
    <jar>../out/artifacts/Juicebox_jar/juicebox_64.jar</jar>
    <outfile>../Juicebox.exe</outfile>
    <errTitle>Juicebox</errTitle>
    <chdir>.</chdir>
    <icon>Juicebox.ico</icon>
    <restartOnCrash>true</restartOnCrash>
    <jre>
        <minVersion>1.7.0</minVersion>
        <runtimeBits>64</runtimeBits>
        <initialHeapSize>5000</initialHeapSize>
        <maxHeapSize>10000</maxHeapSize>
        <opt>-Djnlp.loadMenu="http://iwww.broadinstitute.org/igvdata/hic/files/hicInternalMenu.properties"</opt>
    </jre>
    <splash>
        <file>juicebox.bmp</file>
        <waitForWindow>true</waitForWindow>
        <timeout>60</timeout>
        <timeoutErr>true</timeoutErr>
    </splash>
</launch4jConfig>


================================================
FILE: l4j/config_fix_for_Erez.xml
================================================
<!--
  ~ The MIT License (MIT)
  ~
  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
  ~
  ~ Permission is hereby granted, free of charge, to any person obtaining a copy
  ~ of this software and associated documentation files (the "Software"), to deal
  ~ in the Software without restriction, including without limitation the rights
  ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the Software is
  ~ furnished to do so, subject to the following conditions:
  ~
  ~ The above copyright notice and this permission notice shall be included in
  ~ all copies or substantial portions of the Software.
  ~
  ~  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ~  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ~  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ~  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ~  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ~  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ~  THE SOFTWARE.
  -->

<launch4jConfig>
    <headerType>gui</headerType>
    <jar>../out/artifacts/Juicebox_jar/Juicebox.jar</jar>
    <outfile>../Juicebox.exe</outfile>
    <errTitle>Juicebox</errTitle>
    <chdir>.</chdir>
    <icon>Juicebox.ico</icon>
    <restartOnCrash>true</restartOnCrash>
    <jre>
        <minVersion>1.7.0</minVersion>
        <runtimeBits>64</runtimeBits>
        <initialHeapSize>5000</initialHeapSize>
        <maxHeapSize>10000</maxHeapSize>
        <opt>-Dswing.aatext=true</opt>
        <opt>-Dswing.plaf.metal.controlFont=Tahoma</opt>
        <opt>-Dswing.plaf.metal.userFont=Tahoma</opt>
    </jre>
    <splash>
        <file>juicebox.bmp</file>
        <waitForWindow>true</waitForWindow>
        <timeout>60</timeout>
        <timeoutErr>true</timeoutErr>
    </splash>
</launch4jConfig>


================================================
FILE: l4j/config_nosplash.xml
================================================
<!--
  ~ The MIT License (MIT)
  ~
  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
  ~
  ~ Permission is hereby granted, free of charge, to any person obtaining a copy
  ~ of this software and associated documentation files (the "Software"), to deal
  ~ in the Software without restriction, including without limitation the rights
  ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  ~ copies of the Software, and to permit persons to whom the Software is
  ~ furnished to do so, subject to the following conditions:
  ~
  ~ The above copyright notice and this permission notice shall be included in
  ~ all copies or substantial portions of the Software.
  ~
  ~  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  ~  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  ~  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  ~  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  ~  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  ~  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  ~  THE SOFTWARE.
  -->

<launch4jConfig>
    <headerType>gui</headerType>
    <jar>../out/artifacts/Juicebox_jar/Juicebox.jar</jar>
    <outfile>../out/artifacts/Juicebox_jar/Juicebox.exe</outfile>
    <errTitle>Juicebox</errTitle>
    <chdir>.</chdir>
    <icon>Juicebox.ico</icon>
    <restartOnCrash>true</restartOnCrash>
    <jre>
        <minVersion>1.7.0</minVersion>
        <runtimeBits>64</runtimeBits>
        <initialHeapSize>5000</initialHeapSize>
        <maxHeapSize>10000</maxHeapSize>
    </jre>
</launch4jConfig>


================================================
FILE: lib/broadinstitute/igv.jar
================================================
[File too large to display: 19.3 MB]

================================================
FILE: lib/general/VectorGraphics2D.LGPL.LICENSE
================================================
		   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.


================================================
FILE: lib/general/hic_tools.3.30.00.jar
================================================
[File too large to display: 24.7 MB]

================================================
FILE: lib/universalJavaApplicationStub
================================================
#!/bin/bash
##################################################################################
#                                                                                #
# universalJavaApplicationStub                                                   #
#                                                                                #
# A BASH based JavaApplicationStub for Java Apps on Mac OS X                     #
# that works with both Apple's and Oracle's plist format.                        #
#                                                                                #
# Inspired by Ian Roberts stackoverflow answer                                   #
# at http://stackoverflow.com/a/17546508/1128689                                 #
#                                                                                #
# @author    Tobias Fischer                                                      #
# @url       https://github.com/tofi86/universalJavaApplicationStub              #
# @date      2018-03-10                                                          #
# @version   3.0.1                                                               #
#                                                                                #
##################################################################################
#                                                                                #
# The MIT License (MIT)                                                          #
#                                                                                #
# Copyright (c) 2014-2018 Tobias Fischer                                         #
#                                                                                #
# Permission is hereby granted, free of charge, to any person obtaining a copy   #
# of this software and associated documentation files (the "Software"), to deal  #
# in the Software without restriction, including without limitation the rights   #
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell      #
# copies of the Software, and to permit persons to whom the Software is          #
# furnished to do so, subject to the following conditions:                       #
#                                                                                #
# The above copyright notice and this permission notice shall be included in all #
# copies or substantial portions of the Software.                                #
#                                                                                #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR     #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,       #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE    #
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER         #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,  #
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  #
# SOFTWARE.                                                                      #
#                                                                                #
##################################################################################



# function 'stub_logger()'
#
# A logger which logs to the macOS Console.app using the 'syslog' command
#
# @param1  the log message
# @return  void
################################################################################
function stub_logger() {
	syslog -s -k \
		Facility com.apple.console \
		Level Notice \
		Sender "$(basename "$0")" \
		Message "[$$][${CFBundleName:-$(basename "$0")}] $1"
}



# set the directory abspath of the current
# shell script with symlinks being resolved
############################################

PRG=$0
while [ -h "$PRG" ]; do
	ls=$(ls -ld "$PRG")
	link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null)
	if expr "$link" : '^/' 2> /dev/null >/dev/null; then
		PRG="$link"
	else
		PRG="$(dirname "$PRG")/$link"
	fi
done
PROGDIR=$(dirname "$PRG")
stub_logger "[StubDir] $PROGDIR"



# set files and folders
############################################

# the absolute path of the app package
cd "$PROGDIR"/../../ || exit 11
AppPackageFolder=$(pwd)

# the base path of the app package
cd .. || exit 12
AppPackageRoot=$(pwd)

# set Apple's Java folder
AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java

# set Apple's Resources folder
AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources

# set Oracle's Java folder
OracleJavaFolder="${AppPackageFolder}"/Contents/Java

# set Oracle's Resources folder
OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources

# set path to Info.plist in bundle
InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist

# set the default JVM Version to a null string
JVMVersion=""
JVMMaxVersion=""



# function 'plist_get()'
#
# read a specific Plist key with 'PlistBuddy' utility
#
# @param1  the Plist key with leading colon ':'
# @return  the value as String or Array
################################################################################
plist_get(){
	/usr/libexec/PlistBuddy -c "print $1" "${InfoPlistFile}" 2> /dev/null
}

# function 'plist_get_java()'
#
# read a specific Plist key with 'PlistBuddy' utility
# in the 'Java' or 'JavaX' dictionary (<dict>)
#
# @param1  the Plist :Java(X):Key with leading colon ':'
# @return  the value as String or Array
################################################################################
plist_get_java(){
	plist_get ${JavaKey:-":Java"}$1
}



# read Info.plist and extract JVM options
############################################

# read the program name from CFBundleName
CFBundleName=$(plist_get ':CFBundleName')

# read the icon file name
CFBundleIconFile=$(plist_get ':CFBundleIconFile')


# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode
/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1
exitcode=$?
JavaKey=":Java"

# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode
if [ $exitcode -ne 0 ]; then
	/usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1
	exitcode=$?
	JavaKey=":JavaX"
fi


# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present)
if [ $exitcode -eq 0 ]; then
	stub_logger "[PlistStyle] Apple"

	# set Java and Resources folder
	JavaFolder="${AppleJavaFolder}"
	ResourcesFolder="${AppleResourcesFolder}"

	APP_PACKAGE="${AppPackageFolder}"
	JAVAROOT="${AppleJavaFolder}"
	USER_HOME="$HOME"


	# read the Java WorkingDirectory
	JVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs)
	# set Working Directory based upon PList value
	if [[ ! -z ${JVMWorkDir} ]]; then
		WorkingDirectory="${JVMWorkDir}"
	else
		# AppPackageRoot is the standard WorkingDirectory when the script is started
		WorkingDirectory="${AppPackageRoot}"
	fi
	# expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
	WorkingDirectory=$(eval echo "${WorkingDirectory}")


	# read the MainClass name
	JVMMainClass="$(plist_get_java ':MainClass')"

	# read the SplashFile name
	JVMSplashFile=$(plist_get_java ':SplashFile')

	# read the JVM Properties as an array and retain spaces
	IFS=$'\t\n'
	JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g')))
	unset IFS
	# post processing of the array follows further below...

	# read the ClassPath in either Array or String style
	JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs)
	if [[ $JVMClassPath_RAW == *Array* ]] ; then
		JVMClassPath=.$(plist_get_java ':ClassPath' | grep "    " | sed 's/^ */:/g' | tr -d '\n' | xargs)
	else
		JVMClassPath=${JVMClassPath_RAW}
	fi
	# expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
	JVMClassPath=$(eval echo "${JVMClassPath}")

	# read the JVM Options in either Array or String style
	JVMDefaultOptions_RAW=$(plist_get_java ':VMOptions' | xargs)
	if [[ $JVMDefaultOptions_RAW == *Array* ]] ; then
		JVMDefaultOptions=$(plist_get_java ':VMOptions' | grep "    " | sed 's/^ */ /g' | tr -d '\n' | xargs)
	else
		JVMDefaultOptions=${JVMDefaultOptions_RAW}
	fi

	# read StartOnMainThread and add as -XstartOnFirstThread
	JVMStartOnMainThread=$(plist_get_java ':StartOnMainThread')
	if [ "${JVMStartOnMainThread}" == "true" ]; then
		JVMDefaultOptions+=" -XstartOnFirstThread"
	fi

	# read the JVM Arguments as an array and retain spaces
	IFS=$'\t\n'
	MainArgs=($(xargs -n1 <<<$(plist_get_java ':Arguments')))
	unset IFS
	# post processing of the array follows further below...

	# read the Java version we want to find
	JVMVersion=$(plist_get_java ':JVMVersion' | xargs)
	# post processing of the version string follows below...


# read 'Info.plist' file in Oracle style
else
	stub_logger "[PlistStyle] Oracle"

	# set Working Directory and Java and Resources folder
	JavaFolder="${OracleJavaFolder}"
	ResourcesFolder="${OracleResourcesFolder}"
	WorkingDirectory="${OracleJavaFolder}"

	APP_ROOT="${AppPackageFolder}"

	# read the MainClass name
	JVMMainClass="$(plist_get ':JVMMainClassName')"

	# read the SplashFile name
	JVMSplashFile=$(plist_get ':JVMSplashFile')

	# read the JVM Options as an array and retain spaces
	IFS=$'\t\n'
	JVMOptions=($(plist_get ':JVMOptions' | grep "    " | sed 's/^ *//g'))
	unset IFS
	# post processing of the array follows further below...

	# read the ClassPath in either Array or String style
	JVMClassPath_RAW=$(plist_get ':JVMClassPath')
	if [[ $JVMClassPath_RAW == *Array* ]] ; then
		JVMClassPath=.$(plist_get ':JVMClassPath' | grep "    " | sed 's/^ */:/g' | tr -d '\n' | xargs)
		# expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
		JVMClassPath=$(eval echo "${JVMClassPath}")

	elif [[ ! -z ${JVMClassPath_RAW} ]] ; then
		JVMClassPath=${JVMClassPath_RAW}
		# expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
		JVMClassPath=$(eval echo "${JVMClassPath}")

	else
		#default: fallback to OracleJavaFolder
		JVMClassPath="${JavaFolder}/*"
		# Do NOT expand the default 'AppName.app/Contents/Java/*' classpath (#42)
	fi

	# read the JVM Default Options
	JVMDefaultOptions=$(plist_get ':JVMDefaultOptions' | grep -o " \-.*" | tr -d '\n' | xargs)

	# read the Main Arguments from JVMArguments key as an array and retain spaces (see #46 for naming details)
	IFS=$'\t\n'
	MainArgs=($(xargs -n1 <<<$(plist_get ':JVMArguments' | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/  */ /g')))
	unset IFS
	# post processing of the array follows further below...

	# read the Java version we want to find
	JVMVersion=$(plist_get ':JVMVersion' | xargs)
	# post processing of the version string follows below...
fi



# JVMVersion: post processing and optional splitting
if [[ ${JVMVersion} == *";"* ]]; then
	minMaxArray=(${JVMVersion//;/ })
	JVMVersion=${minMaxArray[0]//+}
	JVMMaxVersion=${minMaxArray[1]//+}
fi
stub_logger "[JavaRequirement] JVM minimum version: ${JVMVersion}"
stub_logger "[JavaRequirement] JVM maximum version: ${JVMMaxVersion}"

# MainArgs: replace occurences of $APP_ROOT with its content
MainArgsArr=()
for i in "${MainArgs[@]}"
do
	MainArgsArr+=("$(eval echo "$i")")
done

# JVMOptions: replace occurences of $APP_ROOT with its content
JVMOptionsArr=()
for i in "${JVMOptions[@]}"
do
	JVMOptionsArr+=("$(eval echo "$i")")
done


# internationalized messages
############################################

LANG=$(defaults read -g AppleLocale)
stub_logger "[Language] $LANG"

# French localization
if [[ $LANG == fr* ]] ; then
	MSG_ERROR_LAUNCHING="ERREUR au lancement de '${CFBundleName}'."
	MSG_MISSING_MAINCLASS="'MainClass' n'est pas spécifié.\nL'application Java ne peut pas être lancée."
	MSG_JVMVERSION_REQ_INVALID="La syntaxe de la version Java demandée est invalide: %s\nVeuillez contacter le développeur de l'application."
	MSG_NO_SUITABLE_JAVA="La version de Java installée sur votre système ne convient pas.\nCe programme nécessite Java %s"
	MSG_JAVA_VERSION_OR_LATER="ou ultérieur"
	MSG_JAVA_VERSION_LATEST="(dernière mise à jour)"
	MSG_JAVA_VERSION_MAX="à %s"
	MSG_NO_SUITABLE_JAVA_CHECK="Merci de bien vouloir installer la version de Java requise."
	MSG_INSTALL_JAVA="Java doit être installé sur votre système.\nRendez-vous sur java.com et suivez les instructions d'installation..."
	MSG_LATER="Plus tard"
	MSG_VISIT_JAVA_DOT_COM="Visiter java.com"

# German localization
elif [[ $LANG == de* ]] ; then
	MSG_ERROR_LAUNCHING="FEHLER beim Starten von '${CFBundleName}'."
	MSG_MISSING_MAINCLASS="Die 'MainClass' ist nicht spezifiziert!\nDie Java-Anwendung kann nicht gestartet werden!"
	MSG_JVMVERSION_REQ_INVALID="Die Syntax der angeforderten Java-Version ist ungültig: %s\nBitte kontaktieren Sie den Entwickler der App."
	MSG_NO_SUITABLE_JAVA="Es wurde keine passende Java-Version auf Ihrem System gefunden!\nDieses Programm benötigt Java %s"
	MSG_JAVA_VERSION_OR_LATER="oder neuer"
	MSG_JAVA_VERSION_LATEST="(neuste Unterversion)"
	MSG_JAVA_VERSION_MAX="bis %s"
	MSG_NO_SUITABLE_JAVA_CHECK="Stellen Sie sicher, dass die angeforderte Java-Version installiert ist."
	MSG_INSTALL_JAVA="Auf Ihrem System muss die 'Java'-Software installiert sein.\nBesuchen Sie java.com für weitere Installationshinweise."
	MSG_LATER="Später"
	MSG_VISIT_JAVA_DOT_COM="java.com öffnen"

# Simplifyed Chinese localization
elif [[ $LANG == zh* ]] ; then
	MSG_ERROR_LAUNCHING="无法启动 '${CFBundleName}'."
	MSG_MISSING_MAINCLASS="没有指定 'MainClass'!\nJava程序无法启动!"
	MSG_JVMVERSION_REQ_INVALID="Java版本参数语法错误: %s\n请联系该应用的开发者。"
	MSG_NO_SUITABLE_JAVA="没有在系统中找到合适的Java版本!\n必须安装Java %s才能够使用该程序!"
	MSG_JAVA_VERSION_OR_LATER="及以上版本"
	MSG_JAVA_VERSION_LATEST="(最新版本)"
	MSG_JAVA_VERSION_MAX="最高为 %s"
	MSG_NO_SUITABLE_JAVA_CHECK="请确保系统中安装了所需的Java版本"
	MSG_INSTALL_JAVA="你需要在Mac中安装Java运行环境!\n访问 java.com 了解如何安装。"
	MSG_LATER="稍后"
	MSG_VISIT_JAVA_DOT_COM="访问 java.com"

# English default localization
else
	MSG_ERROR_LAUNCHING="ERROR launching '${CFBundleName}'."
	MSG_MISSING_MAINCLASS="'MainClass' isn't specified!\nJava application cannot be started!"
	MSG_JVMVERSION_REQ_INVALID="The syntax of the required Java version is invalid: %s\nPlease contact the App developer."
	MSG_NO_SUITABLE_JAVA="No suitable Java version found on your system!\nThis program requires Java %s"
	MSG_JAVA_VERSION_OR_LATER="or later"
	MSG_JAVA_VERSION_LATEST="(latest update)"
	MSG_JAVA_VERSION_MAX="up to %s"
	MSG_NO_SUITABLE_JAVA_CHECK="Make sure you install the required Java version."
	MSG_INSTALL_JAVA="You need to have JAVA installed on your Mac!\nVisit java.com for installation instructions..."
	MSG_LATER="Later"
	MSG_VISIT_JAVA_DOT_COM="Visit java.com"
fi



# function 'get_java_version_from_cmd()'
#
# returns Java version string from 'java -version' command
# works for both old (1.8) and new (9) version schema
#
# @param1  path to a java JVM executable
# @return  the Java version number as displayed in 'java -version' command
################################################################################
function get_java_version_from_cmd() {
	# second sed command strips " and -ea from the version string
	echo $("$1" -version 2>&1 | awk '/version/{print $NF}' | sed -E 's/"//g;s/-ea//g')
}


# function 'extract_java_major_version()'
#
# extract Java major version from a version string
#
# @param1  a Java version number ('1.8.0_45') or requirement string ('1.8+')
# @return  the major version (e.g. '7', '8' or '9', etc.)
################################################################################
function extract_java_major_version() {
	echo $(echo "$1" | sed -E 's/^1\.//;s/^([0-9]+)(-ea|(\.[0-9_.]{1,7})?)(-b[0-9]+-[0-9]+)?[+*]?$/\1/')
}


# function 'get_comparable_java_version()'
#
# return comparable version for a Java version number or requirement string
#
# @param1  a Java version number ('1.8.0_45') or requirement string ('1.8+')
# @return  an 8 digit numeral ('1.8.0_45'->'08000045'; '9.1.13'->'09001013')
################################################################################
function get_comparable_java_version() {
	# cleaning: 1) remove leading '1.'; 2) remove build string (e.g. '-b14-468'); 3) remove 'a-Z' and '-*+' (e.g. '-ea'); 4) replace '_' with '.'
	local cleaned=$(echo "$1" | sed -E 's/^1\.//g;s/-b[0-9]+-[0-9]+$//g;s/[a-zA-Z+*\-]//g;s/_/./g')
	# splitting at '.' into an array
	local arr=( ${cleaned//./ } )
	# echo a string with left padded version numbers
	echo "$(printf '%02s' ${arr[0]})$(printf '%03s' ${arr[1]})$(printf '%03s' ${arr[2]})"
}


# function 'is_valid_requirement_pattern()'
#
# check whether the Java requirement is a valid requirement pattern
#
# supported requirements are for example:
# - 1.6       requires Java 6 (any update)      [1.6, 1.6.0_45, 1.6.0_88]
# - 1.6*      requires Java 6 (any update)      [1.6, 1.6.0_45, 1.6.0_88]
# - 1.6+      requires Java 6 or higher         [1.6, 1.6.0_45, 1.8, 9, etc.]
# - 1.6.0     requires Java 6 (any update)      [1.6, 1.6.0_45, 1.6.0_88]
# - 1.6.0_45  requires Java 6u45                [1.6.0_45]
# - 1.6.0_45+ requires Java 6u45 or higher      [1.6.0_45, 1.6.0_88, 1.8, etc.]
# - 9         requires Java 9 (any update)      [9.0.*, 9.1, 9.3, etc.]
# - 9*        requires Java 9 (any update)      [9.0.*, 9.1, 9.3, etc.]
# - 9+        requires Java 9 or higher         [9.0, 9.1, 10, etc.]
# - 9.1       requires Java 9.1 (any update)    [9.1.*, 9.1.2, 9.1.13, etc.]
# - 9.1*      requires Java 9.1 (any update)    [9.1.*, 9.1.2, 9.1.13, etc.]
# - 9.1+      requires Java 9.1 or higher       [9.1, 9.2, 10, etc.]
# - 9.1.3     requires Java 9.1.3               [9.1.3]
# - 9.1.3*    requires Java 9.1.3 (any update)  [9.1.3]
# - 9.1.3+    requires Java 9.1.3 or higher     [9.1.3, 9.1.4, 9.2.*, 10, etc.]
# - 10-ea     requires Java 10 (early access release)
#
# unsupported requirement patterns are for example:
# - 1.2, 1.3, 1.9       Java 2, 3 are not supported
# - 1.9                 Java 9 introduced a new versioning scheme
# - 6u45                known versioning syntax, but unsupported
# - 9-ea*, 9-ea+        early access releases paired with */+
# - 9., 9.*, 9.+        version ending with a .
# - 9.1., 9.1.*, 9.1.+  version ending with a .
# - 9.3.5.6             4 part version number is unsupported
#
# @param1  a Java requirement string ('1.8+')
# @return  boolean exit code: 0 (is valid), 1 (is not valid)
################################################################################
function is_valid_requirement_pattern() {
	local java_req=$1
	java8pattern='1\.[4-8](\.0)?(\.0_[0-9]+)?[*+]?'
	java9pattern='(9|1[0-9])(-ea|[*+]|(\.[0-9]+){1,2}[*+]?)?'
	# test matches either old Java versioning scheme (up to 1.8) or new scheme (starting with 9)
	if [[ ${java_req} =~ ^(${java8pattern}|${java9pattern})$ ]]; then
		return 0
	else
		return 1
	fi
}



# determine which JVM to use
############################################

# default Apple JRE plugin path (< 1.6)
apple_jre_plugin="/Library/Java/Home/bin/java"
apple_jre_version=$(get_java_version_from_cmd "${apple_jre_plugin}")
# default Oracle JRE plugin path (>= 1.7)
oracle_jre_plugin="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
oracle_jre_version=$(get_java_version_from_cmd "${oracle_jre_plugin}")


# first check system variable "$JAVA_HOME" -> has precedence over any other System JVM
stub_logger '[JavaSearch] Checking for $JAVA_HOME ...'
if [ -n "$JAVA_HOME" ] ; then
	stub_logger "[JavaSearch] ... found JAVA_HOME with value $JAVA_HOME"

	# PR 26: Allow specifying "$JAVA_HOME" relative to "$AppPackageFolder"
	# which allows for bundling a custom version of Java inside your app!
	if [[ $JAVA_HOME == /* ]] ; then
		# if "$JAVA_HOME" starts with a Slash it's an absolute path
		JAVACMD="$JAVA_HOME/bin/java"
	else
		# otherwise it's a relative path to "$AppPackageFolder"
		JAVACMD="$AppPackageFolder/$JAVA_HOME/bin/java"
	fi
	JAVACMD_version=$(get_comparable_java_version $(get_java_version_from_cmd "${JAVACMD}"))
else
	stub_logger "[JavaSearch] ... didn't found JAVA_HOME"
fi


# check for any other or a specific Java version
# also if $JAVA_HOME exists but isn't executable
if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then
	stub_logger "[JavaSearch] Checking for JavaVirtualMachines on the system ..."
	# reset variables
	JAVACMD=""
	JAVACMD_version=""

	# first check whether JVMVersion string is a valid requirement string
	if [ ! -z "${JVMVersion}" ] && ! is_valid_requirement_pattern ${JVMVersion} ; then
		MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMVersion}")
		# log exit cause
		stub_logger "[EXIT 4] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}"
		# display error message with AppleScript
		osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
		# exit with error
		exit 4
	fi
	# then check whether JVMMaxVersion string is a valid requirement string
	if [ ! -z "${JVMMaxVersion}" ] && ! is_valid_requirement_pattern ${JVMMaxVersion} ; then
		MSG_JVMVERSION_REQ_INVALID_EXPANDED=$(printf "${MSG_JVMVERSION_REQ_INVALID}" "${JVMMaxVersion}")
		# log exit cause
		stub_logger "[EXIT 5] ${MSG_JVMVERSION_REQ_INVALID_EXPANDED}"
		# display error message with AppleScript
		osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_JVMVERSION_REQ_INVALID_EXPANDED}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
		# exit with error
		exit 5
	fi


	# find installed JavaVirtualMachines (JDK + JRE)
	allJVMs=()
	# read JDK's from '/usr/libexec/java_home -V' command
	while read -r line; do
		version=$(echo $line | awk -F $',' '{print $1;}')
		path=$(echo $line | awk -F $'" ' '{print $2;}')
		path+="/bin/java"
		allJVMs+=("$version:$path")
	done < <(/usr/libexec/java_home -V 2>&1 | grep '^[[:space:]]')
	# unset while loop variables
	unset version path

	# add Apple JRE if available
	if [ -x "${apple_jre_plugin}" ] ; then
		allJVMs+=("$apple_jre_version:$apple_jre_plugin")
	fi

	# add Oracle JRE if available
	if [ -x "${oracle_jre_plugin}" ] ; then
		allJVMs+=("$oracle_jre_version:$oracle_jre_plugin")
	fi

	# debug output
	for i in "${allJVMs[@]}"
	do
		stub_logger "[JavaSearch] ... found JVM: $i"
	done


	# determine JVMs matching the min/max version requirement
	minC=$(get_comparable_java_version ${JVMVersion})
	maxC=$(get_comparable_java_version ${JVMMaxVersion})
	matchingJVMs=()

	for i in "${allJVMs[@]}"
	do
		# split JVM string at ':' delimiter to retain spaces in $path substring
		IFS=: arr=($i) ; unset IFS
		# [0] JVM version number
		ver=${arr[0]}
		# comparable JVM version number
		comp=$(get_comparable_java_version $ver)
		# [1] JVM path
		path="${arr[1]}"
		# construct string item for adding to the "matchingJVMs" array
		item="$comp:$ver:$path"

		# pre-requisite: current version number needs to be greater than min version number
		if [ "$comp" -ge "$minC" ] ; then

			# perform max version checks if max version requirement is present
			if [ ! -z ${JVMMaxVersion} ] ; then

				# max version requirement ends with '*' modifier
				if [[ ${JVMMaxVersion} == *\* ]] ; then

					# use the '*' modifier from the max version string as wildcard for a 'starts with' comparison
					# and check whether the current version number starts with the max version wildcard string
					if [[ ${ver} == ${JVMMaxVersion} ]]; then
						matchingJVMs+=("$item")

					# or whether the current comparable version is lower than the comparable max version
					elif [ "$comp" -le "$maxC" ] ; then
						matchingJVMs+=("$item")
					fi

				# max version requirement ends with '+' modifier -> always add this version if it's greater than $min
				# because a max requirement with + modifier doesn't make sense
				elif [[ ${JVMMaxVersion} == *+ ]] ; then
					matchingJVMs+=("$item")

				# matches 6 zeros at the end of the max version string (e.g. for 1.8, 9)
				# -> then the max version string should be treated like with a '*' modifier at the end
				#elif [[ ${maxC} =~ ^[0-9]{2}0{6}$ ]] && [ "$comp" -le $(( ${maxC#0} + 999 )) ] ; then
				#	matchingJVMs+=("$item")

				# matches 3 zeros at the end of the max version string (e.g. for 9.1, 10.3)
				# -> then the max version string should be treated like with a '*' modifier at the end
				#elif [[ ${maxC} =~ ^[0-9]{5}0{3}$ ]] && [ "$comp" -le "${maxC}" ] ; then
				#	matchingJVMs+=("$item")

				# matches standard requirements without modifier
				elif [ "$comp" -le "$maxC" ]; then
					matchingJVMs+=("$item")
				fi

			# no max version requirement:

			# min version requirement ends with '+' modifier
			# -> always add the current version because it's greater than $min
			elif [[ ${JVMVersion} == *+ ]] ; then
				matchingJVMs+=("$item")

			# min version requirement ends with '*' modifier
			# -> use the '*' modifier from the min version string as wildcard for a 'starts with' comparison
			#    and check whether the current version number starts with the min version wildcard string
			elif [[ ${JVMVersion} == *\* ]] ; then
				if [[ ${ver} == ${JVMVersion} ]] ; then
					matchingJVMs+=("$item")
				fi

			# compare the min version against the current version with an additional * wildcard for a 'starts with' comparison
			# -> e.g. add 1.8.0_44 when the requirement is 1.8
			elif [[ ${ver} == ${JVMVersion}* ]] ; then
					matchingJVMs+=("$item")
			fi
		fi
	done
	# unset for loop variables
	unset arr ver comp path item

	# debug output
	for i in "${matchingJVMs[@]}"
	do
		stub_logger "[JavaSearch] ... ... matches all requirements: $i"
	done


	# sort the matching JavaVirtualMachines by version number
	# https://stackoverflow.com/a/11789688/1128689
	IFS=$'\n' matchingJVMs=($(sort -nr <<<"${matchingJVMs[*]}"))
	unset IFS


	# get the highest matching JVM
	for ((i = 0; i < ${#matchingJVMs[@]}; i++));
	do
		# split JVM string at ':' delimiter to retain spaces in $path substring
		IFS=: arr=(${matchingJVMs[$i]}) ; unset IFS
		# [0] comparable JVM version number
		comp=${arr[0]}
		# [1] JVM version number
		ver=${arr[1]}
		# [2] JVM path
		path="${arr[2]}"

		# use current value as JAVACMD if it's executable
		if [ -x "$path" ] ; then
			JAVACMD="$path"
			JAVACMD_version=$comp
			break
		fi
	done
	# unset for loop variables
	unset arr comp ver path
fi

# log the Java Command and the extracted version number
stub_logger "[JavaCommand] '$JAVACMD'"
stub_logger "[JavaVersion] $(get_java_version_from_cmd "${JAVACMD}")${JAVACMD_version:+ / $JAVACMD_version}"



if [ -z "${JAVACMD}" ] || [ ! -x "${JAVACMD}" ] ; then

	# different error messages when a specific JVM was required
	if [ ! -z "${JVMVersion}" ] ; then
		# display human readable java version (#28)
		java_version_hr=$(echo ${JVMVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+/ ${MSG_JAVA_VERSION_OR_LATER}/;s/*/ ${MSG_JAVA_VERSION_LATEST}/")
		MSG_NO_SUITABLE_JAVA_EXPANDED=$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}").

		if [ ! -z "${JVMMaxVersion}" ] ; then
			java_version_hr=$(extract_java_major_version ${JVMVersion})
			java_version_max_hr=$(echo ${JVMMaxVersion} | sed -E 's/^1\.([0-9+*]+)$/ \1/g' | sed "s/+//;s/*/ ${MSG_JAVA_VERSION_LATEST}/")
			MSG_NO_SUITABLE_JAVA_EXPANDED="$(printf "${MSG_NO_SUITABLE_JAVA}" "${java_version_hr}") $(printf "${MSG_JAVA_VERSION_MAX}" "${java_version_max_hr}")"
		fi

		# log exit cause
		stub_logger "[EXIT 3] ${MSG_NO_SUITABLE_JAVA_EXPANDED}"

		# display error message with AppleScript
		osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_NO_SUITABLE_JAVA_EXPANDED}\n${MSG_NO_SUITABLE_JAVA_CHECK}\" with title \"${CFBundleName}\"  buttons {\" OK \", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \
				-e "set response to button returned of the result" \
				-e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\""
		# exit with error
		exit 3

	else
		# log exit cause
		stub_logger "[EXIT 1] ${MSG_ERROR_LAUNCHING}"
		# display error message with AppleScript
		osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_INSTALL_JAVA}\" with title \"${CFBundleName}\" buttons {\"${MSG_LATER}\", \"${MSG_VISIT_JAVA_DOT_COM}\"} default button \"${MSG_VISIT_JAVA_DOT_COM}\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \
					-e "set response to button returned of the result" \
					-e "if response is \"${MSG_VISIT_JAVA_DOT_COM}\" then open location \"http://java.com\""
		# exit with error
		exit 1
	fi
fi



# MainClass check
############################################

if [ -z "${JVMMainClass}" ]; then
	# log exit cause
	stub_logger "[EXIT 2] ${MSG_MISSING_MAINCLASS}"
	# display error message with AppleScript
	osascript -e "tell application \"System Events\" to display dialog \"${MSG_ERROR_LAUNCHING}\n\n${MSG_MISSING_MAINCLASS}\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
	# exit with error
	exit 2
fi



# execute $JAVACMD and do some preparation
############################################

# enable drag&drop to the dock icon
export CFProcessPath="$0"

# remove Apples ProcessSerialNumber from passthru arguments (#39)
if [[ $@ == -psn* ]] ; then
	ArgsPassthru=()
else
	ArgsPassthru=("$@")
fi

# change to Working Directory based upon Apple/Oracle Plist info
cd "${WorkingDirectory}" || exit 13
stub_logger "[WorkingDirectory] ${WorkingDirectory}"

# execute Java and set
# - classpath
# - splash image
# - dock icon
# - app name
# - JVM options
# - JVM default options
# - main class
# - main arguments
# - passthru arguments
stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}"
exec "${JAVACMD}" \
		-cp "${JVMClassPath}" \
		-splash:"${ResourcesFolder}/${JVMSplashFile}" \
		-Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \
		-Xdock:name="${CFBundleName}" \
		${JVMOptions:+"$JVMOptions[@]}" }\
		${JVMDefaultOptions:+$JVMDefaultOptions }\
		"${JVMMainClass}"\
		${MainArgsArr:+ "${MainArgsArr[@]}"}\
		${ArgsPassthru:+ "${ArgsPassthru[@]}"}


================================================
FILE: package.sh
================================================
## Internal script for compiling and packaging DMG and EXE
## Compiles with appropriate properties file depending on if
## -b flag is set (if set, compile for BCM)
## Set the two globals at the top for your system
#!/bin/bash

set -e
shopt -s extglob

## GLOBALS: Set for your system
# executable for launch4j, which bundles EXE
LAUNCH4J_EXE="/Users/nchernia/Downloads/launch4j/launch4j"
# Lab At Large location, needed for certificates
LAL_DROPBOX="/Users/nchernia/Dropbox (Lab at Large)/"

printHelpAndExit() {
    echo "Usage: ${0##*/} <version_number> -bh"
    echo "       -v <version_number>: 1.6.1 e.g.  Required"
    echo "       -b: BCM-only version"
    echo "       -h: Print this help and exit"
    exit "$1"
}

while getopts "v:bh" opt; do
    case $opt in
	v) VERSION=$OPTARG ;;
	h) printHelpAndExit 0;;
	b) BCM=1 ;;
	[?]) printHelpAndExit 1;;
	esac
done

if [ -z "$VERSION" ]
then
   printHelpAndExit 1
fi

if [ -z "${BCM}" ]
then
    CONFIG_FILE="config.xml"
else
    CONFIG_FILE="config_bcm.xml"
fi

# these shouldn't need to be changed
BASE_DIR=$(pwd)
APP_NAME="Juicebox"
ARTIFACT_DIR="${BASE_DIR}/out/artifacts/Juicebox_jar"
DMG_BACKGROUND_IMG="Juicebox_bg.png"

# compile, bundle, sign 
cd "${BASE_DIR}"
rm -r out
ant
#ant sign -- don't sign for DMG, problem with slowness 
if [ -z "${BCM}" ]
then
    ant bundle -Dversion="$VERSION"
else
    ant bundlebcm # this is deprecated
fi

cd "${ARTIFACT_DIR}"

APP_EXE="${APP_NAME}.app/Contents/MacOS/JavaAppLauncher" 
VOL_NAME="${APP_NAME}_${VERSION}"  
DMG_TMP="${VOL_NAME}-temp.dmg"
DMG_FINAL="${VOL_NAME}.dmg"        
STAGING_DIR="./Install"            

# clear out any old data
rm -rf "${STAGING_DIR}" "${DMG_TMP}" "${DMG_FINAL}"

codesign -s "Erez Aiden" "${APP_NAME}".app --deep
 
# copy over the stuff we want in the final disk image to our staging dir
mkdir -p "${STAGING_DIR}"
cp -rpf "${APP_NAME}.app" "${STAGING_DIR}"
# ... cp anything else you want in the DMG - documentation, etc.

pushd "${STAGING_DIR}"
 
# strip the executable
#echo "Stripping ${APP_EXE}..."
#strip -u -r "${APP_EXE}"
 
# compress the executable if we have upx in PATH
#  UPX: http://upx.sourceforge.net/
#if hash upx 2>/dev/null; then
#   echo "Compressing (UPX) ${APP_EXE}..."
#   upx -9 "${APP_EXE}"
#fi
 
# ... perform any other stripping/compressing of libs and executables
 
popd
# figure out how big our DMG needs to be
#  assumes our contents are at least 1M!
SIZE=`du -sh "${STAGING_DIR}" | sed 's/\([0-9]*\)M\(.*\)/\1/'`
SIZE=`echo "${SIZE} + 1.0" | bc | awk '{print int($1+0.5)}'`
 
if [ $? -ne 0 ]; then
   echo "Error: Cannot compute size of staging dir"
   exit
fi

# create the temp DMG file
hdiutil create -srcfolder "${STAGING_DIR}" -volname "${VOL_NAME}" -fs HFS+ \
      -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "${DMG_TMP}"
 
echo "Created DMG: ${DMG_TMP}"
 
# mount it and save the device
DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \
         egrep '^/dev/' | sed 1q | awk '{print $1}')
 
sleep 2

# add a link to the Applications dir
echo "Add link to /Applications"
pushd /Volumes/"${VOL_NAME}"
ln -s /Applications
popd
 
# add a background image
mkdir /Volumes/"${VOL_NAME}"/.background
cp "${BASE_DIR}/${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/
 
# tell the Finder to resize the window, set the background,
#  change the icon size, place the icons in the right position, etc.
echo '
   tell application "Finder"
     tell disk "'${VOL_NAME}'"
           open
           set current view of container window to icon view
           set toolbar visible of container window to false
           set statusbar visible of container window to false
           set the bounds of container window to {400, 100, 920, 460}
           set viewOptions to the icon view options of container window
           set arrangement of viewOptions to not arranged
           set icon size of viewOptions to 72
           set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'"
           set position of item "'${APP_NAME}'.app" of container window to {140, 170}
           set position of item "Applications" of container window to {380, 170}
           close
           open
           update without registering applications
           delay 2
     end tell
   end tell
' | osascript
 
sync

# unmount it
hdiutil detach "${DEVICE}"
 
# now make the final image a compressed disk image
echo "Creating compressed image"
hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}"
 
# clean up
rm -rf "${DMG_TMP}"
rm -rf "${STAGING_DIR}"
 
echo 'Done creating DMG'

###
### BUNDLE EXE
###

cd "${BASE_DIR}"
ant sign
cd "${BASE_DIR}"/l4j

# clean up any old versions
if ls *.exe 1> /dev/null 2>&1 
then
    rm *.exe 
fi

# Package exe
"${LAUNCH4J_EXE}" "${CONFIG_FILE}"

# Sign.  Uncomment below to change signature
#openssl pkcs12 -in ${LAL_DROPBOX}/important_jars/ErezSLieberman.p12 -nocerts\
# -nodes -out ${LAL_DROPBOX}/important_jars/certificate.pem
# Sign for the first time.  Password juicebox. To create new password, 
# uncomment above line, change "-pass" below
osslsigncode sign -certs "${LAL_DROPBOX}"/important_jars/erez_s_lieberman.pem \
     -key "${LAL_DROPBOX}"/important_jars/certificate.pem -pass juicebox \
     -n ${APP_NAME} -i http://aidenlab.org/ -in "${BASE_DIR}"/l4j/Juicebox.exe \
     -out "${BASE_DIR}"/l4j/signed.exe
# Find the size of the signature in bytes 
# i.e. sizeInBytesOf(signed.exe) - sizeInBytesOf(Juicebox.exe)
sizeInBytesSigned=$(ls -l "${BASE_DIR}"/l4j/signed.exe | awk '{print $5}')
sizeInBytesUnsigned=$(ls -l "${BASE_DIR}"/l4j/Juicebox.exe | awk '{print $5}')
# Print difference in Little Endian hex
echo "Edit ${BASE_DIR}/l4j/Juicebox.exe "
echo "with your favorite HEX editor to change last two bytes of the exe."
# This tells the zip file that there is a signature and what size. 
echo "Edit with the following value, save, and press enter to continue:"
awk -v s1=$sizeInBytesSigned -v s2=$sizeInBytesUnsigned  'BEGIN{str=sprintf("%x", s1-s2); x=substr(str,3,2); x=x substr(str,1,2); print x}'
read line
# Sign the modified Juicebox.exe using above osslsigncode again
osslsigncode sign -certs "${LAL_DROPBOX}"/important_jars/erez_s_lieberman.pem \
     -key "${LAL_DROPBOX}"/important_jars/certificate.pem -pass juicebox \
     -n "Juicebox" -i http://aidenlab.org/ -in "${BASE_DIR}"/l4j/Juicebox.exe \
     -out "${BASE_DIR}"/l4j/signed.exe
mv "${BASE_DIR}"/l4j/signed.exe "${ARTIFACT_DIR}"/Juicebox\ ${VERSION}.exe
mv "${ARTIFACT_DIR}"/Juicebox.jar "${ARTIFACT_DIR}"/Juicebox\ ${VERSION}.jar
echo "Done. The packaged executables live in ${ARTIFACT_DIR}"

================================================
FILE: src/images/manifest.mf
================================================
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build



================================================
FILE: src/juicebox/CommandBroadcaster.java
================================================
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */

package juicebox;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;

//import java.io.InputStreamReader;
//import java.net.UnknownHostException;
//import java.util.ArrayList;
//import java.util.List;

/**
 * @author jrobinso
 *         Date: 10/21/13
 *         Time: 2:59 PM
 */
class CommandBroadcaster {

    public static int selfPort;
    public static final int numPorts = 50;

    public static void broadcast(String command) {
        // Broadcast self port to other running instances
        for (int p = 30000; p <= 30000 + numPorts - 1; p++) {
            if (p == selfPort) continue;  // don't broadcast to self
            try {
                CommandBroadcaster.broadcastCommand(command, p);
            } catch (java.net.ConnectException e) {
                // Expected
            } catch (IOException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        }
    }

    private static void broadcastCommand(String command, int port) throws IOException {
        Socket socket = null;
        PrintWriter out = null;
        try {
            socket = new Socket("127.0.0.1", port);
            out = new PrintWriter(socket.getOutputStream(), true);
            out.println(command);

        } finally {
            try {
                if (out != null) out.close();
                if (socket != null) socket.close();
            } catch (IOException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        }
    }

}


================================================
FILE: src/juicebox/CommandExecutor.java
================================================
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package juicebox;

import org.broad.igv.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

class CommandExecutor {

    private final HiC hic;

    public CommandExecutor(HiC hic) {
        this.hic = hic;
    }

    private List<String> getArgs(String[] tokens) {
        List<String> args = new ArrayList<>(tokens.length);
        for (String s : tokens) {
            if (s.trim().length() > 0) {
                args.add(s.trim());
            }
        }
        return args;
    }

    public String execute(String command) {

        List<String> commandString = StringUtils.breakQuotedString(command, ' ');
        List<String> args = getArgs(commandString.toArray(new String[commandString.size()]));

        String result = "OK";
        System.err.println("Executing: " + command);
        try {
            if (args.size() > 0) {

                String cmd = args.get(0).toLowerCase();
                if (cmd.equals("setlocation")) {
                    if (args.size() > 7) {
                        String chrXName = args.get(1);
                        String chrYName = args.get(2);
                        String unitName = args.get(3);
                        HiC.Unit unit = HiC.valueOfUnit(unitName);
                        int binSize = Integer.parseInt(args.get(4));
                        double xOrigin = Double.parseDouble(args.get(5));
                        double yOrigin = Double.parseDouble(args.get(6));
                        double scaleFactor = Double.parseDouble(args.get(7));
                        hic.setLocation(chrXName, chrYName, unit, binSize, xOrigin, yOrigin, scaleFactor,
                                HiC.ZoomCallType.DIRECT, "Goto Sync", false);
                    } else {
                        result = "Not enough parameters";
                    }
                }
            } else {
                result = "Unknown command string";
            }

        } catch (Exception e) {
            System.err.println(e.getLocalizedMessage());
            result = "Error: " + e.getMessage();
        }
        return result;
    }

}


================================================
FILE: src/juicebox/CommandListener.java
================================================
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */

package juicebox;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

class CommandListener implements Runnable {

    private static CommandListener listener;
    private final Thread listenerThread;
    private final HiC hic;
    private int port = -1;
    private ServerSocket serverSocket = null;
    private Socket clientSocket = null;
    private boolean halt = false;

    private CommandListener(int port, HiC hic) throws IOException {
        this.port = port;
        this.hic = hic;
        listenerThread = new Thread(this);
        serverSocket = new ServerSocket(port);
    }

    public static synchronized void start(HiC hic) {

        // Grab the first available port
        int port = 0;
        for (int p = 30000; p <= 30000 + CommandBroadcaster.numPorts - 1; p++) {
            try {
                listener = new CommandListener(p, hic);
                listener.listenerThread.start();
                port = p;
                break;
            } catch (IOException e) {
                // Expected condition -- port in use
            }
        }
        CommandBroadcaster.selfPort = port;
    }

    public static synchronized void halt() {
        if (listener != null) {
            listener.halt = true;
            listener.listenerThread.interrupt();
            listener.closeSockets();
            listener = null;
        }
    }

    /**
     * Loop forever, processing client requests synchronously.  The server is single threaded.
     */
    public void run() {

        CommandExecutor cmdExe = new CommandExecutor(hic);
        System.out.println("Listening on port " + port);

        try {
            while (!halt) {
                clientSocket = serverSocket.accept();
                processClientRequest(cmdExe);
                if (clientSocket != null) {
                    try {
                        clientSocket.close();
                        clientSocket = null;
                    } catch (IOException e) {
                        System.err.println("Error in client socket loop" + e.getLocalizedMessage());
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

    }

    /**
     * Process a client request
     *
     * @param cmdExe
     * @throws IOException
     */
    private void processClientRequest(CommandExecutor cmdExe) throws IOException {

        BufferedReader in = null;

        try {
            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()), HiCGlobals.bufferSize);
            String cmd;
            while (!halt && (cmd = in.readLine()) != null) {
                if (cmd.equalsIgnoreCase("halt")) {
                    halt = true;
                    return;
                }
                cmdExe.execute(cmd);
            }
        } catch (IOException e) {
            System.err.println("Error processing client session" + e.getLocalizedMessage());
        } finally {
            if (in != null) in.close();
        }
    }

    private void closeSockets() {
        if (clientSocket != null) {
            try {
                clientSocket.close();
                clientSocket = null;
            } catch (IOException e) {
                System.err.println("Error closing clientSocket" + e.getLocalizedMessage());
            }
        }

        if (serverSocket != null) {
            try {
                serverSocket.close();
                serverSocket = null;
            } catch (IOException e) {
                System.err.println("Error closing server socket" + e.getLocalizedMessage());
            }
        }
    }

}


================================================
FILE: src/juicebox/Context.java
================================================
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */

package juicebox;

import juicebox.data.basics.Chromosome;
import juicebox.windowui.HiCZoom;

/**
 * @author jrobinso
 * @since Aug 11, 2010
 */
public class Context {

    private final Chromosome chromosome;
    private HiCZoom zoom;

    private double binOrigin = 0;

    public Context(Chromosome chromosome) {
        this.chromosome = chromosome;
    }

    public double getBinOrigin() {
        return binOrigin;
    }

    public void setBinOrigin(double binOrigin) {
        this.binOrigin = binOrigin;
    }

    public int getGenomicPositionOrigin() {
        return (int) (binOrigin * zoom.getBinSize());
    }

    public HiCZoom getZoom() {
        return zoom;
    }

    public void setZoom(HiCZoom zoom) {
        this.zoom = zoom;
    }

    public long getChrLength() {
		return chromosome.getLength();
	}

    public Chromosome getChromosome() {
        return chromosome;
    }

}


================================================
FILE: src/juicebox/DirectoryManager.java
================================================
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */

package juicebox;

import org.broad.igv.Globals;
import org.broad.igv.exceptions.DataLoadException;
import org.broad.igv.ui.util.FileDialogUtils;

import javax.swing.*;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.io.IOException;
import java.util.prefs.Preferences;

/**
 * @author Jim Robinson
 * @since 3/19/12
 */
public class DirectoryManager {

    private final static String HIC_DIR_USERPREF = "hicDir";
    private static File USER_HOME;
    private static File USER_DIRECTORY;    // FileSystemView.getFileSystemView().getDefaultDirectory();
    private static File HIC_DIRECTORY;     // The HIC application directory

    private static File getUserHome() {
        if (USER_HOME == null) {
            String userHomeString = System.getProperty("user.home");
            USER_HOME = new File(userHomeString);
        }
        return USER_HOME;
    }

    /**
     * The user directory.  On Mac and Linux this should be the user home directory.  On Windows platforms this
     * is the "My Documents" directory.
     */
    public static synchronized File getUserDirectory() {
        if (USER_DIRECTORY == null) {
            System.out.print("Fetching user directory... ");
            USER_DIRECTORY = FileSystemView.getFileSystemView().getDefaultDirectory();
            //Mostly for testing, in some environments USER_DIRECTORY can be null
            if (USER_DIRECTORY == null) {
                USER_DIRECTORY = getUserHome();
            }
        }
        return USER_DIRECTORY;
    }


    public static File getHiCDirectory() {

        if (HIC_DIRECTORY == null) {

            // Hack for known Java / Windows bug.   Attempt to remove (possible) read-only bit from user directory
            if (System.getProperty("os.name").startsWith("Windows")) {
                try {
                    Runtime.getRuntime().exec("attrib -r \"" + getUserDirectory().getAbsolutePath() + "\"");
                } catch (Exception e) {
                    // We tried
                }
            }

            HIC_DIRECTORY = getHiCDirectoryOverride();

            // If still null, try the default place
            if (HIC_DIRECTORY == null) {
                File rootDir = getUserHome();
                HIC_DIRECTORY = new File(rootDir, "juicebox");

                if (!HIC_DIRECTORY.exists()) {
                    try {
                        boolean wasSuccessful = HIC_DIRECTORY.mkdir();
                        if (!wasSuccessful) {
                            System.err.println("Failed to create user directory!");
                            HIC_DIRECTORY = null;
                        }
                    } catch (Exception e) {
                        System.err.println("Error creating juicebox directory" + e.getLocalizedMessage());
                    }
                }
            }


            // The HIC directory either doesn't exist or isn't writeable.  This situation can arise with Windows Vista
            // and Windows 7 due to a Java bug (http://bugs.sun.com/view_bug.do?bug_id=4787931)
            if (HIC_DIRECTORY == null || !HIC_DIRECTORY.exists() || !canWrite(HIC_DIRECTORY)) {
                if (Globals.isHeadless() || Globals.isSuppressMessages()) {
                    System.err.println("Cannot write to hic directory: " + HIC_DIRECTORY.getAbsolutePath());
                    HIC_DIRECTORY = (new File(".")).getParentFile();
                } else {
                    int option = JOptionPane.showConfirmDialog(null,
                            "<html>The default Hi-C directory (" + HIC_DIRECTORY + ") " +
                                    "cannot be accessed.  Click Yes to choose a new folder or No to exit.<br>" +
                                    "This folder will be used to create the 'hic' directory",
                            "Hi-C Directory Error", JOptionPane.YES_NO_OPTION);

                    if (option == JOptionPane.YES_OPTION) {
                        File parentDirectory = FileDialogUtils.chooseDirectory("Select a location for the hic directory", null);
                        if (parentDirectory != null) {
                            HIC_DIRECTORY = new File(parentDirectory, "hic");
                            HIC_DIRECTORY.mkdir();
                            Preferences prefs = Preferences.userNodeForPackage(Globals.class);
                            prefs.put(HIC_DIR_USERPREF, HIC_DIRECTORY.getAbsolutePath());
                        }
                    }
                }
            }


            if (HIC_DIRECTORY == null || !HIC_DIRECTORY.canRead()) {
                throw new DataLoadException("Cannot read from user directory", HIC_DIRECTORY.getAbsolutePath());
            } else if (!canWrite(HIC_DIRECTORY)) {
                throw new DataLoadException("Cannot write to user directory", HIC_DIRECTORY.getAbsolutePath());
            }

            System.err.println("HiC Directory: " + HIC_DIRECTORY.getAbsolutePath());
        }
        return HIC_DIRECTORY;
    }

    private static File getHiCDirectoryOverride() {
        Preferences userPrefs = null;
        File override = null;
        try {
            // See if an override location has been specified.  This is stored with the Java Preferences API
            userPrefs = Preferences.userNodeForPackage(Globals.class);
            String userDir = userPrefs.get(HIC_DIR_USERPREF, null);
            if (userDir != null) {
                override = new File(userDir);
                if (!override.exists()) {
                    override = null;
                    userPrefs.remove(HIC_DIR_USERPREF);
                }
            }
        } catch (Exception e) {
            assert userPrefs != null;
            userPrefs.remove(HIC_DIR_USERPREF);
            override = null;
            System.err.println("Error creating user directory");
            e.printStackTrace();
        }
        return override;
    }

    private static boolean canWrite(File directory) {
        // There are bugs in the Windows Java JVM that can cause user directories to be non-writable (target fix is
        // Java 7).  The only way to know if the directory is writable for sure is to try to write something.
        if (Globals.IS_WINDOWS) {
            File testFile = null;
            try {
                testFile = new File(directory, "hic332415dsfjdsklt.testfile");
                if (testFile.exists()) {
                    testFile.delete();
                }
                testFile.deleteOnExit();
                testFile.createNewFile();
                return testFile.exists();
            } catch (IOException e) {
                return false;
            } finally {
                assert testFile != null;
                if (testFile.exists()) {
                    testFile.delete();
                }
            }
        } else {
            return directory.canWrite();
        }

    }
}


================================================
FILE: src/juicebox/HiC.java
================================================
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of Medicine
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *  THE SOFTWARE.
 */


package juicebox;

import juicebox.data.*;
import juicebox.data.anchor.GenericLocus;
import juicebox.data.anchor.MotifAnchor;
import juicebox.data.basics.Chromosome;
import juicebox.gui.SuperAdapter;
import juicebox.tools.utils.common.MatrixTools;
import juicebox.track.*;
import juicebox.track.feature.Feature2D;
import juicebox.windowui.HiCZoom;
import juicebox.windowui.MatrixType;
import juicebox.windowui.NormalizationHandler;
import juicebox.windowui.NormalizationType;
import org.apache.commons.math.linear.RealMatrix;
import org.broad.igv.ui.util.MessageUtils;
import org.broad.igv.util.Pair;
import org.broad.igv.util.ResourceLocator;

import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * This is the "model" class for the HiC viewer.
 */
public class HiC {

    private final HiCTrackManager trackManager;
    private final SuperAdapter superAdapter;
    private final String eigString = "Eigenvector";
    private final String ctrlEigString = "Ctrl_Eigenvector";
    private final ZoomActionTracker zoomActionTracker = new ZoomActionTracker();
    private final List<Feature2D> highlightedFeatures = new ArrayList<>();
    private double scaleFactor;
    private String xPosition;
    private String yPosition;
    private MatrixType displayOption = MatrixType.OBSERVED;
    private NormalizationType obsNormalizationType = NormalizationHandler.NONE;
    private NormalizationType ctrlNormalizationType = NormalizationHandler.NONE;
    private ChromosomeHandler chromosomeHandler;
    private Dataset dataset;
    private Dataset controlDataset;
    private HiCZoom currentZoom;
    //private MatrixZoomData matrixForReloadState;
    private Context xContext;
    private Context yContext;
    private EigenvectorTrack eigenvectorTrack, controlEigenvectorTrack;
    private ResourceTree resourceTree;
    private LoadEncodeAction encodeAction;
    private Point cursorPoint, diagonalCursorPoint, gwCursorPoint;
    private Point selectedBin;
    private boolean linkedMode;
    private boolean m_zoomChanged;
    private boolean m_displayOptionChanged;
    private boolean m_normalizationTypeChanged;
    private boolean showFeatureHighlight;

    public HiC(SuperAdapter superAdapter) {
        this.superAdapter = superAdapter;
        trackManager = new HiCTrackManager(superAdapter, this);
        //feature2DHandler = new Feature2DHandler();
        m_zoomChanged = false;
        m_displayOptionChanged = false;
        m_normalizationTypeChanged = false;
    }

    /**
     * @param string
     * @return string with replacements of 000000 with M and 000 with K
     */
    private static String cleanUpNumbersInName(String string) {
        string = (new StringBuilder(string)).reverse().toString();
        string = string.replaceAll("000000", "M").replaceAll("000", "K");
        return (new StringBuilder(string)).reverse().toString();
    }

    public static HiC.Unit valueOfUnit(String unit) {
        if (unit.equalsIgnoreCase(Unit.BP.toString())) {
            return Unit.BP;
        } else if (unit.equalsIgnoreCase(Unit.FRAG.toString())) {
            return Unit.FRAG;
        }
        return null;
    }

    public Unit getDefaultUnit() {
        return dataset.getBpZooms().size() > 0 ? Unit.BP : Unit.FRAG;
    }

    public void reset() {
        dataset = null;
        controlDataset = null;
        displayOption = MatrixType.OBSERVED;
        currentZoom = null;
        resetContexts();
        chromosomeHandler = null;
        eigenvectorTrack = null;
        controlEigenvectorTrack = null;
        resourceTree = null;
        encodeAction = null;
        obsNormalizationType = NormalizationHandler.NONE;
        ctrlNormalizationType = NormalizationHandler.NONE;
        zoomActionTracker.clear();
        clearFeatures();
    }

    //Todo why iterate through tracksToRemove if you end up calling clearFeatures() at the end?
    public void clearTracksForReloadState() {
        ArrayList<HiCTrack> tracksToRemove = new ArrayList<>(trackManager.getLoadedTracks());
        for (HiCTrack trackToRemove : tracksToRemove) {
            String name = trackToRemove.getName();
            if (name.equalsIgnoreCase(eigString)) {
                eigenvectorTrack = null;
            } else if (name.equalsIgnoreCase(ctrlEigString)) {
                controlEigenvectorTrack = null;
            } else {
                trackManager.removeTrack(trackToRemove);
            }
        }
        clearFeatures();
        superAdapter.updateTrackPanel();
    }

    private void clearFeatures() {
        trackManager.clearTracks();
        // feature2DHandler.clearLists();
    }

    /**
     * Use setCursorPoint() to set cursorPoint to the last known mouse click position before calling this method
     */
    public void undoZoomAction() {
        zoomActionTracker.undoZoom();
        ZoomAction currentZoomAction = zoomActionTracker.getCurrentZoomAction();
        unsafeActuallySetZoomAndLocation(currentZoomAction.getChromosomeX(), currentZoomAction.getChromosomeY(),
                currentZoomAction.getHiCZoom(), currentZoomAction.getGenomeX(), currentZoomAction.getGenomeY(),
                currentZoomAction.getScaleFactor(), currentZoomAction.getResetZoom(), currentZoomAction.getZoomCallType(),
                true, currentZoomAction.getResolutionLocked(), false);
    }

    /**
     * Use setCursorPoint() to set cursorPoint to the last known mouse click position before calling this method
     */
    public void redoZoomAction() {
        zoomActionTracker.redoZoom();
        ZoomAction currentZoomAction = zoomActionTracker.getCurrentZoomAction();
        unsafeActuallySetZoomAndLocation(currentZoomAction.getChromosomeX(), currentZoomAction.getChromosomeY(),
                currentZoomAction.getHiCZoom(), currentZoomAction.getGenomeX(), currentZoomAction.getGenomeY(),
                currentZoomAction.getScaleFactor(), currentZoomAction.getResetZoom(), currentZoomAction.getZoomCallType(),
                true, currentZoomAction.getResolutionLocked(), false);
    }

    public double getScaleFactor() {
        return scaleFactor;
    }

    private void setScaleFactor(double scaleFactor) {
        this.scaleFactor = Math.max(Math.min(50, scaleFactor), 1e-10);
    }

    public void loadEigenvectorTrack() {
        if (eigenvectorTrack == null) {
            eigenvectorTrack = new EigenvectorTrack(eigString, eigString, this, false);
        }
        if (controlEigenvectorTrack == null && isControlLoaded()) {
            controlEigenvectorTrack = new EigenvectorTrack(ctrlEigString, ctrlEigString, this, true);
        }
        trackManager.add(eigenvectorTrack);
        if (controlEigenvectorTrack != null && isControlLoaded()) {
            trackManager.add(controlEigenvectorTrack);
        }
    }

    public void refreshEigenvectorTrackIfExists() {
        if (eigenvectorTrack != null) {
            eigenvectorTrack.forceRefreshCache();
        }
        if (controlEigenvectorTrack != null) {
            controlEigenvectorTrack.forceRefreshCache();
        }
    }

    public ResourceTree getResourceTree() {
        return resourceTree;
    }

    public void setResourceTree(ResourceTree rTree) {
        resourceTree = rTree;
    }

    public void setEncodeAction(LoadEncodeAction eAction) {
        encodeAction = eAction;
    }

    public boolean isLinkedMode() {
        return linkedMode;
    }

    public void setLinkedMode(boolean linkedMode) {
        this.linkedMode = linkedMode;
    }

    public List<HiCTrack> getLoadedTracks() {
        return trackManager == null ? new ArrayList<>() : trackManager.getLoadedTracks();
    }

    public void unsafeLoadHostedTracks(List<ResourceLocator> locators) {
        trackManager.unsafeTrackLoad(locators);
    }

    public void unsafeLoadTrack(String path) {
        trackManager.unsafeLoadTrackDirectPath(path);
    }

    public void loadCoverageTrack(String label) {
        NormalizationType no = dataset.getNormalizationHandler().getNormTypeFromString(label);
        trackManager.loadCoverageTrack(no, false);
        if (isControlLoaded()) {
            trackManager.loadCoverageTrack(no, true);
        }
    }

    public void removeTrack(HiCTrack track) {
        if (resourceTree != null) resourceTree.remove(track.getLocator());
        if (encodeAction != null) encodeAction.remove(track.getLocator());
        trackManager.removeTrack(track);
    }

    public void removeTrack(ResourceLocator locator) {
        if (resourceTree != null) resourceTree.remove(locator);
        if (encodeAction != null) encodeAction.remove(locator);
        trackManager.removeTrack(locator);
    }

    public void moveTrack(HiCTrack track, boolean thisShouldBeMovedUp) {
        if (thisShouldBeMovedUp) {
            //move the track up
            trackManager.moveTrackUp(track);
        } else {
            //move the track down
            trackManager.moveTrackDown(track);
        }
    }

    public Dataset getDataset() {
        return dataset;
    }

    public void setDataset(Dataset dataset) {
        this.dataset = dataset;
    }

    public Dataset getControlDataset() {
        return controlDataset;
    }

    public void setControlDataset(Dataset controlDataset) {
        this.controlDataset = controlDataset;
    }

    public void setSelectedChromosomes(Chromosome chrX, Chromosome chrY) {
        this.xContext = new Context(chrX
Download .txt
gitextract_y7dv046v/

├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.md
│       ├── custom.md
│       └── feature_request.md
├── .gitignore
├── .idea/
│   ├── artifacts/
│   │   ├── Juicebox.xml
│   │   └── JuicerTools.xml
│   ├── compiler.xml
│   ├── copyright/
│   │   ├── Juicebox.xml
│   │   └── profiles_settings.xml
│   ├── encodings.xml
│   ├── jarRepositories.xml
│   ├── kotlinc.xml
│   ├── libraries/
│   │   ├── KotlinJavaRuntime.xml
│   │   ├── broadinstitute.xml
│   │   ├── general.xml
│   │   ├── jargs.xml
│   │   ├── jcuda.xml
│   │   ├── jfreechart_1_0_19.xml
│   │   ├── log4j_core_2_11_0.xml
│   │   └── npy.xml
│   ├── misc.xml
│   ├── modules.xml
│   ├── scopes/
│   │   ├── Juicebox_Source.xml
│   │   └── scope_settings.xml
│   ├── uiDesigner.xml
│   └── vcs.xml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── HiCFormatV8.md
├── HiC_format_v7.docx
├── JuiceboxIcon.icns
├── Juicer.README
├── LICENSE
├── README.md
├── benchmark.sh
├── build.xml
├── data/
│   └── inter.hic
├── internalREADME.md
├── juicebox.properties
├── l4j/
│   ├── config.xml
│   ├── config_bcm.xml
│   ├── config_broad.xml
│   ├── config_fix_for_Erez.xml
│   └── config_nosplash.xml
├── lib/
│   ├── appbundler-1.0.jar
│   ├── broadinstitute/
│   │   ├── htsjdk-1.139.jar
│   │   ├── igv.jar
│   │   └── log4j-core-2.11.0.jar
│   ├── general/
│   │   ├── VectorGraphics2D-0.11.jar
│   │   ├── VectorGraphics2D.LGPL.LICENSE
│   │   ├── commons-math3-3.6.1.jar
│   │   ├── guava-18.0.jar
│   │   ├── hic_tools.3.30.00.jar
│   │   ├── jahmm-0.6.1.jar
│   │   ├── jargs.jar
│   │   ├── jfreechart-1.0.19.jar
│   │   ├── jsi1.1.jar
│   │   └── npy.jar
│   ├── jarbundler-core-3.3.0.jar
│   ├── jcuda/
│   │   ├── jcuda-0.7.0.jar
│   │   ├── jcuda-0.8.0.jar
│   │   ├── jcuda-natives-0.8.0-apple-x86_64.jar
│   │   ├── jcuda-natives-0.8.0-linux-ppc_64.jar
│   │   ├── jcuda-natives-0.8.0-linux-x86_64.jar
│   │   └── jcudaUtils-0.0.4.jar
│   ├── kotlin/
│   │   ├── kotlin-reflect-sources.jar
│   │   ├── kotlin-reflect.jar
│   │   ├── kotlin-stdlib-jdk7-sources.jar
│   │   ├── kotlin-stdlib-jdk7.jar
│   │   ├── kotlin-stdlib-jdk8-sources.jar
│   │   ├── kotlin-stdlib-jdk8.jar
│   │   ├── kotlin-stdlib-sources.jar
│   │   ├── kotlin-stdlib.jar
│   │   ├── kotlin-test-sources.jar
│   │   └── kotlin-test.jar
│   └── universalJavaApplicationStub
├── package.sh
└── src/
    ├── images/
    │   └── manifest.mf
    ├── juicebox/
    │   ├── CommandBroadcaster.java
    │   ├── CommandExecutor.java
    │   ├── CommandListener.java
    │   ├── Context.java
    │   ├── DirectoryManager.java
    │   ├── HiC.java
    │   ├── HiCGlobals.java
    │   ├── IGVUtils.java
    │   ├── MainWindow.java
    │   ├── ProcessHelper.java
    │   ├── Unused.java
    │   ├── assembly/
    │   │   ├── AssemblyFileExporter.java
    │   │   ├── AssemblyFileImporter.java
    │   │   ├── AssemblyHeatmapHandler.java
    │   │   ├── AssemblyOperationExecutor.java
    │   │   ├── AssemblyScaffoldHandler.java
    │   │   ├── AssemblyStateTracker.java
    │   │   ├── IGVFeatureCopy.java
    │   │   ├── OneDimAssemblyTrackLifter.java
    │   │   ├── PsfFileExporter.java
    │   │   ├── PsfFileImporter.java
    │   │   └── Scaffold.java
    │   ├── data/
    │   │   ├── AbstractDatasetReader.java
    │   │   ├── BinReader.java
    │   │   ├── Block.java
    │   │   ├── BlockIndex.java
    │   │   ├── ChromosomeHandler.java
    │   │   ├── CombinedDatasetReader.java
    │   │   ├── CombinedExpectedValueFunction.java
    │   │   ├── ContactRecord.java
    │   │   ├── CustomMatrixZoomData.java
    │   │   ├── Dataset.java
    │   │   ├── DatasetReader.java
    │   │   ├── DatasetReaderFactory.java
    │   │   ├── DatasetReaderV2.java
    │   │   ├── DynamicBlock.java
    │   │   ├── DynamicBlockIndex.java
    │   │   ├── DynamicMatrixZoomData.java
    │   │   ├── ExpectedValueFunction.java
    │   │   ├── ExpectedValueFunctionImpl.java
    │   │   ├── GeneLocation.java
    │   │   ├── HiCFileLoader.java
    │   │   ├── HiCFileTools.java
    │   │   ├── Matrix.java
    │   │   ├── MatrixZoomData.java
    │   │   ├── NormFactorMapReader.java
    │   │   ├── NormalizationVector.java
    │   │   ├── ZoomAction.java
    │   │   ├── ZoomActionTracker.java
    │   │   ├── anchor/
    │   │   │   ├── BEDTools.java
    │   │   │   ├── GenericLocus.java
    │   │   │   ├── GenericLocusParser.java
    │   │   │   ├── GenericLocusTools.java
    │   │   │   ├── MotifAnchor.java
    │   │   │   ├── MotifAnchorParser.java
    │   │   │   └── MotifAnchorTools.java
    │   │   ├── basics/
    │   │   │   ├── Chromosome.java
    │   │   │   ├── ListOfDoubleArrays.java
    │   │   │   ├── ListOfFloatArrays.java
    │   │   │   └── ListOfIntArrays.java
    │   │   ├── binary_file_layout.txt
    │   │   ├── censoring/
    │   │   │   ├── CustomMZDRegionHandler.java
    │   │   │   ├── OneDimSearchUtils.java
    │   │   │   ├── OneDimTrackCensoring.java
    │   │   │   └── RegionPair.java
    │   │   ├── feature/
    │   │   │   ├── Feature.java
    │   │   │   ├── FeatureFilter.java
    │   │   │   ├── FeatureFunction.java
    │   │   │   └── GenomeWideList.java
    │   │   ├── iterator/
    │   │   │   ├── BigContactRecordList.java
    │   │   │   ├── ContactRecordIterator.java
    │   │   │   ├── CoupledIteratorAndOffset.java
    │   │   │   ├── GWIteratorContainer.java
    │   │   │   ├── GenomeWideIterator.java
    │   │   │   ├── IteratorContainer.java
    │   │   │   ├── ListIteratorContainer.java
    │   │   │   ├── ListOfListGenerator.java
    │   │   │   ├── ListOfListIterator.java
    │   │   │   ├── ListOfListIteratorContainer.java
    │   │   │   ├── ParallelizedListOperations.java
    │   │   │   └── ZDIteratorContainer.java
    │   │   └── v9depth/
    │   │       ├── ConstantDepth.java
    │   │       ├── LogDepth.java
    │   │       └── V9Depth.java
    │   ├── encode/
    │   │   ├── EncodeFileBrowser.java
    │   │   ├── EncodeFileRecord.java
    │   │   ├── EncodeTableModel.java
    │   │   ├── UCSCEncodeUtils.java
    │   │   ├── encode.hg18.txt
    │   │   ├── encode.hg19.txt
    │   │   ├── encode.hic.txt
    │   │   ├── encode.mm9.txt
    │   │   └── rnaChip.txt
    │   ├── gui/
    │   │   ├── BoundsPopupMenuListener.java
    │   │   ├── MainMenuBar.java
    │   │   ├── MainViewPanel.java
    │   │   ├── PseudoCountEditor.java
    │   │   └── SuperAdapter.java
    │   ├── mapcolorui/
    │   │   ├── BoundingBoxRenderer.java
    │   │   ├── ColorRangeDialog.java
    │   │   ├── ColorScaleHandler.java
    │   │   ├── CursorRenderer.java
    │   │   ├── Feature2DHandler.java
    │   │   ├── FeatureRenderer.java
    │   │   ├── GeneralTileManager.java
    │   │   ├── HeatmapClickListener.java
    │   │   ├── HeatmapMouseHandler.java
    │   │   ├── HeatmapPanel.java
    │   │   ├── HeatmapRenderer.java
    │   │   ├── HiCMapTileManager.java
    │   │   ├── JColorRangePanel.java
    │   │   ├── OEColorScale.java
    │   │   ├── PearsonColorScale.java
    │   │   ├── PearsonColorScaleEditor.java
    │   │   ├── RangeSlider.java
    │   │   ├── RangeSliderUI.java
    │   │   ├── ResolutionControl.java
    │   │   └── ThumbnailPanel.java
    │   ├── matrix/
    │   │   ├── BasicMatrix.java
    │   │   ├── DiskResidentBlockMatrix.java
    │   │   ├── InMemoryMatrix.java
    │   │   ├── RealMatrixWrapper.java
    │   │   ├── SparseSymmetricMatrix.java
    │   │   ├── SparseVector.java
    │   │   └── SymmetricMatrix.java
    │   ├── state/
    │   │   ├── ImportStateFileDialog.java
    │   │   ├── LoadStateFromXMLFile.java
    │   │   ├── SaveFileDialog.java
    │   │   ├── Slideshow.java
    │   │   ├── State.java
    │   │   ├── XMLFileHandling.java
    │   │   ├── XMLFileParser.java
    │   │   └── XMLFileWriter.java
    │   ├── tools/
    │   │   ├── HiCTools.java
    │   │   ├── chrom/
    │   │   │   └── sizes/
    │   │   │       ├── ChromosomeSizes.java
    │   │   │       ├── EBV.chrom.sizes
    │   │   │       ├── GRCm38.chrom.sizes
    │   │   │       ├── Pf3D7.chrom.sizes
    │   │   │       ├── TAIR10.chrom.sizes
    │   │   │       ├── aedAeg1.chrom.sizes
    │   │   │       ├── anasPlat1.chrom.sizes
    │   │   │       ├── assembly.chrom.sizes
    │   │   │       ├── b37.chrom.sizes
    │   │   │       ├── bTaurus3.chrom.sizes
    │   │   │       ├── calJac3.chrom.sizes
    │   │   │       ├── canFam3.chrom.sizes
    │   │   │       ├── capHir1.chrom.sizes
    │   │   │       ├── ce10.chrom.sizes
    │   │   │       ├── dMel.chrom.sizes
    │   │   │       ├── dm3.chrom.sizes
    │   │   │       ├── dm6.chrom.sizes
    │   │   │       ├── equCab2.chrom.sizes
    │   │   │       ├── felCat8.chrom.sizes
    │   │   │       ├── galGal4.chrom.sizes
    │   │   │       ├── hg18.chrom.sizes
    │   │   │       ├── hg19.chrom.sizes
    │   │   │       ├── hg19_contig.chrom.sizes
    │   │   │       ├── hg38.chrom.sizes
    │   │   │       ├── loxAfr3.chrom.sizes
    │   │   │       ├── macMul1.chrom.sizes
    │   │   │       ├── macMulBaylor.chrom.sizes
    │   │   │       ├── mm10.chrom.sizes
    │   │   │       ├── mm9.chrom.sizes
    │   │   │       ├── oryCun2.chrom.sizes
    │   │   │       ├── oryLat2.chrom.sizes
    │   │   │       ├── panTro4.chrom.sizes
    │   │   │       ├── ratNor5.chrom.sizes
    │   │   │       ├── ratNor6.chrom.sizes
    │   │   │       ├── sCerS288c.chrom.sizes
    │   │   │       ├── sacCer3.chrom.sizes
    │   │   │       ├── spretus.chrom.sizes
    │   │   │       └── susScr3.chrom.sizes
    │   │   ├── clt/
    │   │   │   ├── AggregateProcessing.java
    │   │   │   ├── CLTFactory.java
    │   │   │   ├── CommandLineParser.java
    │   │   │   ├── CommandLineParserForJuicer.java
    │   │   │   ├── JuiceboxCLT.java
    │   │   │   ├── JuicerCLT.java
    │   │   │   ├── UnitTests.java
    │   │   │   ├── juicer/
    │   │   │   │   ├── ABCompartmentsDiff.java
    │   │   │   │   ├── APA.java
    │   │   │   │   ├── Arrowhead.java
    │   │   │   │   ├── CompareLists.java
    │   │   │   │   ├── HiCCUPS.java
    │   │   │   │   ├── HiCCUPS2.java
    │   │   │   │   ├── HiCCUPSDiff.java
    │   │   │   │   ├── HiCCUPSRegionHandler.java
    │   │   │   │   ├── HiCCUPSscores.java
    │   │   │   │   ├── Localizer.java
    │   │   │   │   ├── LoopDomains.java
    │   │   │   │   └── MotifFinder.java
    │   │   │   └── old/
    │   │   │       ├── AddNorm.java
    │   │   │       ├── BPToFragment.java
    │   │   │       ├── BigWig.java
    │   │   │       ├── BinToPairs.java
    │   │   │       ├── CalcKR.java
    │   │   │       ├── CalcMatrixSum.java
    │   │   │       ├── Dump.java
    │   │   │       ├── Eigenvector.java
    │   │   │       ├── FragmentToBed.java
    │   │   │       ├── LibraryComplexity.java
    │   │   │       ├── PairsToBin.java
    │   │   │       ├── Pearsons.java
    │   │   │       ├── PreProcessing.java
    │   │   │       ├── SQLDatabase.java
    │   │   │       ├── Statistics.java
    │   │   │       ├── Summation.java
    │   │   │       └── ValidateFile.java
    │   │   ├── dev/
    │   │   │   ├── APAvsDistance.java
    │   │   │   ├── ChromosomeCalculation.java
    │   │   │   ├── CompareVectors.java
    │   │   │   ├── GeneFinder.java
    │   │   │   ├── HiCArtMNDWriter.java
    │   │   │   ├── IntraChromTriple.java
    │   │   │   ├── MapSelectionPanel.java
    │   │   │   ├── ParallelizedJuicerTools.java
    │   │   │   ├── Private.java
    │   │   │   ├── RandomUtils.java
    │   │   │   ├── TripleCentroid.java
    │   │   │   └── TriplesAPA.java
    │   │   └── utils/
    │   │       ├── Benchmark.java
    │   │       ├── common/
    │   │       │   ├── ArrayTools.java
    │   │       │   ├── HiCFileUtils.java
    │   │       │   ├── MatrixTools.java
    │   │       │   ├── ShellCommandRunner.java
    │   │       │   ├── StatPercentile.java
    │   │       │   └── UNIXTools.java
    │   │       ├── dev/
    │   │       │   ├── AFAUtils.java
    │   │       │   ├── LocalGenomeRegion.java
    │   │       │   ├── LocationType.java
    │   │       │   └── PearsonCorrelationMetric.java
    │   │       ├── juicer/
    │   │       │   ├── GeneTools.java
    │   │       │   ├── apa/
    │   │       │   │   ├── APADataStack.java
    │   │       │   │   ├── APAPlotter.java
    │   │       │   │   ├── APARegionStatistics.java
    │   │       │   │   └── APAUtils.java
    │   │       │   ├── arrowhead/
    │   │       │   │   ├── ArrowheadScore.java
    │   │       │   │   ├── ArrowheadScoreList.java
    │   │       │   │   ├── BinnedScore.java
    │   │       │   │   ├── BlockBuster.java
    │   │       │   │   ├── BlockResults.java
    │   │       │   │   ├── CumulativeBlockResults.java
    │   │       │   │   ├── DynamicProgrammingUtils.java
    │   │       │   │   ├── HighScore.java
    │   │       │   │   ├── MatrixTriangles.java
    │   │       │   │   └── connectedcomponents/
    │   │       │   │       ├── BinaryConnectedComponents.java
    │   │       │   │       └── IndexNode.java
    │   │       │   ├── hiccups/
    │   │       │   │   ├── GPUController.java
    │   │       │   │   ├── GPUController2.java
    │   │       │   │   ├── GPUHelper.java
    │   │       │   │   ├── GPUOutputContainer.java
    │   │       │   │   ├── GPUOutputContainer2.java
    │   │       │   │   ├── GPUTesting.java
    │   │       │   │   ├── HiCCUPS2Kernel_1kb.cu
    │   │       │   │   ├── HiCCUPSConfiguration.java
    │   │       │   │   ├── HiCCUPSKernel.cu
    │   │       │   │   ├── HiCCUPSRegionContainer.java
    │   │       │   │   └── HiCCUPSUtils.java
    │   │       │   └── localizer/
    │   │       │       └── LocalizerUtils.java
    │   │       ├── norm/
    │   │       │   ├── CustomNormVectorFileHandler.java
    │   │       │   ├── ExternalNormalizationVectorLoader.java
    │   │       │   ├── GenomeWideNormalizationVectorUpdater.java
    │   │       │   ├── MultithreadedNormalizationVectorUpdater.java
    │   │       │   ├── NormVectorInfo.java
    │   │       │   ├── NormVectorUpdater.java
    │   │       │   ├── NormalizationCalculations.java
    │   │       │   ├── NormalizationTools.java
    │   │       │   ├── NormalizationVectorIndexEntry.java
    │   │       │   ├── NormalizationVectorUpdater.java
    │   │       │   ├── NormalizedSum.java
    │   │       │   ├── UnusedFunctions.java
    │   │       │   ├── ZeroScale.java
    │   │       │   └── final2/
    │   │       │       ├── FinalScale.java
    │   │       │       └── ScaleThreadObject.java
    │   │       └── original/
    │   │           ├── BigWigUtils.java
    │   │           ├── BlockPP.java
    │   │           ├── BlockQueue.java
    │   │           ├── BlockQueueFB.java
    │   │           ├── BlockQueueMem.java
    │   │           ├── Chunk.java
    │   │           ├── ContactCount.java
    │   │           ├── ExpectedValueCalculation.java
    │   │           ├── FragmentCalculation.java
    │   │           ├── HiCDBUtils.java
    │   │           ├── IndexEntry.java
    │   │           ├── LargeIndexEntry.java
    │   │           ├── MTIndexHandler.java
    │   │           ├── MatrixPP.java
    │   │           ├── MatrixZoomDataPP.java
    │   │           ├── MultithreadedPreprocessor.java
    │   │           ├── MultithreadedPreprocessorHic.java
    │   │           ├── Preprocessor.java
    │   │           ├── merge/
    │   │           │   ├── HiCMergeTools.java
    │   │           │   ├── StatsUtils.java
    │   │           │   └── merger/
    │   │           │       ├── GraphsMerger.java
    │   │           │       ├── Merger.java
    │   │           │       ├── PairedAlignmentStatsMerger.java
    │   │           │       ├── SingleAlignmentStatsMerger.java
    │   │           │       └── StatsMerger.java
    │   │           ├── mnditerator/
    │   │           │   ├── AlignmentPair.java
    │   │           │   ├── AlignmentPairLong.java
    │   │           │   ├── AsciiPairIterator.java
    │   │           │   ├── AsciiToBinConverter.java
    │   │           │   ├── BAMPairIterator.java
    │   │           │   ├── BinPairIterator.java
    │   │           │   ├── ComplexLineParser.java
    │   │           │   ├── GenericPairIterator.java
    │   │           │   ├── MNDFileParser.java
    │   │           │   ├── MNDLineParser.java
    │   │           │   ├── PairIterator.java
    │   │           │   ├── RandomAccessAsciiPairIterator.java
    │   │           │   ├── ShortBinPairIterator.java
    │   │           │   ├── SimpleAsciiPairIterator.java
    │   │           │   └── SimpleLineParser.java
    │   │           └── stats/
    │   │               ├── LoneStatisticsWorker.java
    │   │               ├── ParallelStatistics.java
    │   │               ├── ParallelStatisticsWorker.java
    │   │               ├── StatisticsContainer.java
    │   │               └── StatisticsWorker.java
    │   ├── track/
    │   │   ├── CategoryPanel.java
    │   │   ├── EigenvectorTrack.java
    │   │   ├── HiCCoverageDataSource.java
    │   │   ├── HiCDataAdapter.java
    │   │   ├── HiCDataPoint.java
    │   │   ├── HiCDataSource.java
    │   │   ├── HiCDataTrack.java
    │   │   ├── HiCFeatureTrack.java
    │   │   ├── HiCFixedGridAxis.java
    │   │   ├── HiCFragmentAxis.java
    │   │   ├── HiCGridAxis.java
    │   │   ├── HiCIGVDataAdapter.java
    │   │   ├── HiCLoadDialog.java
    │   │   ├── HiCTrack.java
    │   │   ├── HiCTrackManager.java
    │   │   ├── HiCWigAdapter.java
    │   │   ├── LoadAction.java
    │   │   ├── LoadEncodeAction.java
    │   │   ├── ResourceTree.java
    │   │   ├── TrackConfigDialog.java
    │   │   ├── TrackConfigDialog.jfd
    │   │   ├── TrackConfigPanel.java
    │   │   ├── TrackLabelPanel.java
    │   │   ├── TrackPanel.java
    │   │   ├── feature/
    │   │   │   ├── AnnotationLayer.java
    │   │   │   ├── AnnotationLayerHandler.java
    │   │   │   ├── CustomAnnotationRTree2DHandler.java
    │   │   │   ├── Feature2D.java
    │   │   │   ├── Feature2DGuiContainer.java
    │   │   │   ├── Feature2DList.java
    │   │   │   ├── Feature2DParser.java
    │   │   │   ├── Feature2DTools.java
    │   │   │   ├── Feature2DWithMotif.java
    │   │   │   ├── FeatureFilter.java
    │   │   │   └── FeatureFunction.java
    │   │   ├── tracksMenu_GalGal5.xml
    │   │   ├── tracksMenu_hg19.xml
    │   │   ├── tracksMenu_hg38.xml
    │   │   ├── tracksMenu_mm10.xml
    │   │   └── tracksMenu_mm9.xml
    │   └── windowui/
    │       ├── DisabledGlassPane.java
    │       ├── DumpDialog.java
    │       ├── EditFeatureAttributesDialog.java
    │       ├── FileDropTargetListener.java
    │       ├── GoToPanel.java
    │       ├── HiCChromosomeFigPanel.java
    │       ├── HiCKeyDispatcher.java
    │       ├── HiCLayout.java
    │       ├── HiCRulerPanel.java
    │       ├── HiCZoom.java
    │       ├── JBTreeCellRenderer.java
    │       ├── JSplitButton.java
    │       ├── LoadAssemblyAnnotationsDialog.java
    │       ├── LoadDialog.java
    │       ├── LoadModifiedAssemblyAnnotationsDialog.java
    │       ├── MatrixType.java
    │       ├── NormalizationHandler.java
    │       ├── NormalizationType.java
    │       ├── QCDialog.java
    │       ├── RecentMenu.java
    │       ├── SaveAssemblyDialog.java
    │       ├── SaveImageDialog.java
    │       └── layers/
    │           ├── LayerPanelButtons.java
    │           ├── LayersPanel.java
    │           ├── Load2DAnnotationsDialog.java
    │           ├── MiniAnnotationsLayerPanel.java
    │           ├── PlottingStyleButton.java
    │           ├── SaveAnnotationsDialog.java
    │           ├── UnsavedAnnotationWarning.java
    │           └── annotations2d.txt
    ├── org/
    │   └── tc33/
    │       └── jheatchart/
    │           ├── HeatChart.java
    │           ├── LICENSE.MD
    │           └── README.MD
    └── resources/
        └── manifests/
            ├── juicebox_jar/
            │   └── META-INF/
            │       └── MANIFEST.MF
            └── juicer_tools_jar/
                └── META-INF/
                    └── MANIFEST.MF
Download .txt
Showing preview only (380K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4078 symbols across 338 files)

FILE: src/juicebox/CommandBroadcaster.java
  class CommandBroadcaster (line 41) | class CommandBroadcaster {
    method broadcast (line 46) | public static void broadcast(String command) {
    method broadcastCommand (line 60) | private static void broadcastCommand(String command, int port) throws ...

FILE: src/juicebox/CommandExecutor.java
  class CommandExecutor (line 37) | class CommandExecutor {
    method CommandExecutor (line 41) | public CommandExecutor(HiC hic) {
    method getArgs (line 45) | private List<String> getArgs(String[] tokens) {
    method execute (line 55) | public String execute(String command) {

FILE: src/juicebox/CommandListener.java
  class CommandListener (line 33) | class CommandListener implements Runnable {
    method CommandListener (line 43) | private CommandListener(int port, HiC hic) throws IOException {
    method start (line 50) | public static synchronized void start(HiC hic) {
    method halt (line 67) | public static synchronized void halt() {
    method run (line 79) | public void run() {
    method processClientRequest (line 109) | private void processClientRequest(CommandExecutor cmdExe) throws IOExc...
    method closeSockets (line 130) | private void closeSockets() {

FILE: src/juicebox/Context.java
  class Context (line 34) | public class Context {
    method Context (line 41) | public Context(Chromosome chromosome) {
    method getBinOrigin (line 45) | public double getBinOrigin() {
    method setBinOrigin (line 49) | public void setBinOrigin(double binOrigin) {
    method getGenomicPositionOrigin (line 53) | public int getGenomicPositionOrigin() {
    method getZoom (line 57) | public HiCZoom getZoom() {
    method setZoom (line 61) | public void setZoom(HiCZoom zoom) {
    method getChrLength (line 65) | public long getChrLength() {
    method getChromosome (line 69) | public Chromosome getChromosome() {

FILE: src/juicebox/DirectoryManager.java
  class DirectoryManager (line 41) | public class DirectoryManager {
    method getUserHome (line 48) | private static File getUserHome() {
    method getUserDirectory (line 60) | public static synchronized File getUserDirectory() {
    method getHiCDirectory (line 73) | public static File getHiCDirectory() {
    method getHiCDirectoryOverride (line 144) | private static File getHiCDirectoryOverride() {
    method canWrite (line 168) | private static boolean canWrite(File directory) {

FILE: src/juicebox/HiC.java
  class HiC (line 56) | public class HiC {
    method HiC (line 88) | public HiC(SuperAdapter superAdapter) {
    method cleanUpNumbersInName (line 101) | private static String cleanUpNumbersInName(String string) {
    method valueOfUnit (line 107) | public static HiC.Unit valueOfUnit(String unit) {
    method getDefaultUnit (line 116) | public Unit getDefaultUnit() {
    method reset (line 120) | public void reset() {
    method clearTracksForReloadState (line 138) | public void clearTracksForReloadState() {
    method clearFeatures (line 154) | private void clearFeatures() {
    method undoZoomAction (line 162) | public void undoZoomAction() {
    method redoZoomAction (line 174) | public void redoZoomAction() {
    method getScaleFactor (line 183) | public double getScaleFactor() {
    method setScaleFactor (line 187) | private void setScaleFactor(double scaleFactor) {
    method loadEigenvectorTrack (line 191) | public void loadEigenvectorTrack() {
    method refreshEigenvectorTrackIfExists (line 204) | public void refreshEigenvectorTrackIfExists() {
    method getResourceTree (line 213) | public ResourceTree getResourceTree() {
    method setResourceTree (line 217) | public void setResourceTree(ResourceTree rTree) {
    method setEncodeAction (line 221) | public void setEncodeAction(LoadEncodeAction eAction) {
    method isLinkedMode (line 225) | public boolean isLinkedMode() {
    method setLinkedMode (line 229) | public void setLinkedMode(boolean linkedMode) {
    method getLoadedTracks (line 233) | public List<HiCTrack> getLoadedTracks() {
    method unsafeLoadHostedTracks (line 237) | public void unsafeLoadHostedTracks(List<ResourceLocator> locators) {
    method unsafeLoadTrack (line 241) | public void unsafeLoadTrack(String path) {
    method loadCoverageTrack (line 245) | public void loadCoverageTrack(String label) {
    method removeTrack (line 253) | public void removeTrack(HiCTrack track) {
    method removeTrack (line 259) | public void removeTrack(ResourceLocator locator) {
    method moveTrack (line 265) | public void moveTrack(HiCTrack track, boolean thisShouldBeMovedUp) {
    method getDataset (line 275) | public Dataset getDataset() {
    method setDataset (line 279) | public void setDataset(Dataset dataset) {
    method getControlDataset (line 283) | public Dataset getControlDataset() {
    method setControlDataset (line 287) | public void setControlDataset(Dataset controlDataset) {
    method setSelectedChromosomes (line 291) | public void setSelectedChromosomes(Chromosome chrX, Chromosome chrY) {
    method getZoom (line 297) | public HiCZoom getZoom() {
    method getZd (line 301) | public MatrixZoomData getZd() throws NullPointerException {
    method getControlZd (line 312) | public MatrixZoomData getControlZd() {
    method getControlMatrix (line 321) | public Matrix getControlMatrix() {
    method getXContext (line 326) | public Context getXContext() {
    method getYContext (line 330) | public Context getYContext() {
    method resetContexts (line 334) | public void resetContexts() {
    method getCursorPoint (line 339) | public Point getCursorPoint() {
    method setCursorPoint (line 343) | public void setCursorPoint(Point point) {
    method getDiagonalCursorPoint (line 347) | public Point getDiagonalCursorPoint() {
    method setDiagonalCursorPoint (line 351) | public void setDiagonalCursorPoint(Point point) {
    method getGWCursorPoint (line 355) | public Point getGWCursorPoint() {
    method setGWCursorPoint (line 359) | public void setGWCursorPoint(Point point) {
    method getCurrentRegionWindowGenomicPositions (line 363) | public long[] getCurrentRegionWindowGenomicPositions() {
    method getXPosition (line 381) | public String getXPosition() {
    method setXPosition (line 385) | public void setXPosition(String txt) {
    method getYPosition (line 389) | public String getYPosition() {
    method setYPosition (line 393) | public void setYPosition(String txt) {
    method getMatrix (line 397) | public Matrix getMatrix() {
    method setSelectedBin (line 418) | public void setSelectedBin(Point point) {
    method getDisplayOption (line 426) | public MatrixType getDisplayOption() {
    method setDisplayOption (line 430) | public void setDisplayOption(MatrixType newDisplay) {
    method isControlLoaded (line 437) | public boolean isControlLoaded() {
    method isWholeGenome (line 441) | public boolean isWholeGenome() {
    method setZoomChanged (line 445) | private void setZoomChanged() {
    method testZoomChanged (line 450) | public synchronized boolean testZoomChanged() {
    method centerFragment (line 458) | public void centerFragment(int fragmentX, int fragmentY) {
    method centerBP (line 478) | public void centerBP(int bpX, int bpY) {
    method center (line 497) | public void center(double binX, double binY) {
    method moveBy (line 513) | public void moveBy(double dxBins, double dyBins) {
    method moveTo (line 525) | private void moveTo(double newBinX, double newBinY) {
    method setDisplayOptionChanged (line 551) | private void setDisplayOptionChanged() {
    method testDisplayOptionChanged (line 556) | public synchronized boolean testDisplayOptionChanged() {
    method setNormalizationTypeChanged (line 564) | private void setNormalizationTypeChanged() {
    method testNormalizationTypeChanged (line 569) | public synchronized boolean testNormalizationTypeChanged() {
    method getObsNormalizationType (line 577) | public NormalizationType getObsNormalizationType() {
    method setObsNormalizationType (line 581) | public void setObsNormalizationType(String label) {
    method getControlNormalizationType (line 589) | public NormalizationType getControlNormalizationType() {
    method setControlNormalizationType (line 593) | public void setControlNormalizationType(String label) {
    method getEigenvector (line 601) | public double[] getEigenvector(final int chrIdx, final int n, boolean ...
    method getExpectedValues (line 616) | public ExpectedValueFunction getExpectedValues() {
    method getExpectedControlValues (line 621) | public ExpectedValueFunction getExpectedControlValues() {
    method getNormalizationVector (line 626) | public NormalizationVector getNormalizationVector(int chrIdx) {
    method getControlNormalizationVector (line 631) | public NormalizationVector getControlNormalizationVector(int chrIdx) {
    method getNormalizedObservedValue (line 637) | public float getNormalizedObservedValue(int binX, int binY) {
    method getNormalizedControlValue (line 648) | public float getNormalizedControlValue(int binX, int binY) {
    method zoomToDrawnBox (line 666) | public void zoomToDrawnBox(final long xBP0, final long yBP0, final dou...
    method setLocation (line 698) | public void setLocation(String chrXName, String chrYName, HiC.Unit uni...
    method unsafeSetLocation (line 710) | public void unsafeSetLocation(String chrXName, String chrYName, String...
    method safeActuallySetZoomAndLocation (line 721) | private boolean safeActuallySetZoomAndLocation(HiCZoom newZoom, long g...
    method safeActuallySetZoomAndLocation (line 728) | private boolean safeActuallySetZoomAndLocation(final String chrXName, ...
    method unsafeActuallySetZoomAndLocation (line 759) | public boolean unsafeActuallySetZoomAndLocation(String chrXName, Strin...
    method computeStandardUnzoomCoordinates (line 869) | private Point computeStandardUnzoomCoordinates(Matrix preZoomMatrix, C...
    method adjustLockButton (line 888) | private void adjustLockButton(boolean savedResolutionLocked) {
    method setChromosomesFromBroadcast (line 894) | private void setChromosomesFromBroadcast(String chrXName, String chrYN...
    method broadcastLocation (line 911) | public void broadcastLocation() {
    method getLocationDescription (line 916) | public String getLocationDescription() {
    method getDefaultLocationDescription (line 928) | public String getDefaultLocationDescription() {
    method restoreLocation (line 941) | public void restoreLocation(String cmd) {
    method loadLoopList (line 949) | public void loadLoopList(String path) {
    method generateTrackFromLocation (line 953) | public void generateTrackFromLocation(int mousePos, boolean isHorizont...
    method safeSave1DTrackToWigFile (line 1021) | private void safeSave1DTrackToWigFile(final Chromosome chromosomeForPo...
    method unsafeSave1DTrackToWigFile (line 1046) | private void unsafeSave1DTrackToWigFile(Chromosome chromosomeForPositi...
    method generateRainbowBed (line 1077) | public void generateRainbowBed() {
    method safeGenerateRainbowBed (line 1090) | private void safeGenerateRainbowBed(final Chromosome chromosome, final...
    method unsafeGenerateRainbowBed (line 1114) | private void unsafeGenerateRainbowBed(Chromosome chromosome, PrintWrit...
    method getRgb (line 1124) | private String getRgb(int i, long size) {
    method isInPearsonsMode (line 1131) | public boolean isInPearsonsMode() {
    method isPearsonEdgeCaseEncountered (line 1135) | public boolean isPearsonEdgeCaseEncountered(HiCZoom zoom) {
    method isResolutionLocked (line 1139) | public boolean isResolutionLocked() {
    method isPearsonsNotAvailableForFile (line 1147) | public boolean isPearsonsNotAvailableForFile(boolean isControl) {
    method isPearsonsNotAvailableAtSpecificZoom (line 1161) | public boolean isPearsonsNotAvailableAtSpecificZoom(boolean isControl,...
    method getColorForRuler (line 1173) | public Color getColorForRuler() {
    method isVSTypeDisplay (line 1185) | public boolean isVSTypeDisplay() {
    method isInControlPearsonsMode (line 1189) | public boolean isInControlPearsonsMode() {
    method getColorScaleKey (line 1193) | public String getColorScaleKey() {
    method getHighlightedFeatures (line 1201) | public List<Feature2D> getHighlightedFeatures() {
    method setHighlightedFeatures (line 1208) | public void setHighlightedFeatures(List<Feature2D> highlightedFeatures) {
    method setShowFeatureHighlight (line 1213) | public void setShowFeatureHighlight(boolean showFeatureHighlight) {
    method getChromosomeHandler (line 1217) | public ChromosomeHandler getChromosomeHandler() {
    method setChromosomeHandler (line 1221) | public void setChromosomeHandler(ChromosomeHandler chromosomeHandler) {
    method getZoomActionTracker (line 1227) | public ZoomActionTracker getZoomActionTracker() {
    method clearAllMatrixZoomDataCache (line 1231) | public void clearAllMatrixZoomDataCache() {
    method clearAllCacheForDataset (line 1238) | private void clearAllCacheForDataset(Dataset ds) {
    method getRTreeHandlerIntersectingFeatures (line 1242) | public List<Pair<GenericLocus, GenericLocus>> getRTreeHandlerIntersect...
    method getNormalizationOptions (line 1250) | public String[] getNormalizationOptions(boolean isControl) {
    method exportDataCenteredAboutRegion (line 1276) | public void exportDataCenteredAboutRegion(int xBinPos, int yBinPos) th...
    method createNewDynamicResolutions (line 1323) | public void createNewDynamicResolutions(int newResolution) {
    type ZoomCallType (line 1331) | public enum ZoomCallType {
    type Unit (line 1335) | public enum Unit {BP, FRAG}

FILE: src/juicebox/HiCGlobals.java
  class HiCGlobals (line 37) | public class HiCGlobals {
    method verifySupportedHiCFileVersion (line 98) | public static void verifySupportedHiCFileVersion(int version) throws R...
    method verifySupportedHiCFileWritingVersion (line 105) | public static void verifySupportedHiCFileWritingVersion(int version) t...
    method font (line 112) | public static Font font(int size, boolean isBold) {
    method getIdealThreadCount (line 118) | public static int getIdealThreadCount() {
    method newFixedThreadPool (line 122) | public static ExecutorService newFixedThreadPool() {
    type menuType (line 126) | public enum menuType {MAP, LOCATION, STATE}

FILE: src/juicebox/IGVUtils.java
  class IGVUtils (line 49) | class IGVUtils {
    method createSocketHelper (line 55) | private static void createSocketHelper() {
    method sendToIGV (line 79) | public static void sendToIGV(final String locus1, final String locus2) {
    class SocketHelper (line 115) | static class SocketHelper {
      method SocketHelper (line 120) | SocketHelper(BufferedReader in, PrintWriter out, Socket socket) {

FILE: src/juicebox/MainWindow.java
  class MainWindow (line 56) | public class MainWindow extends JFrame {
    method MainWindow (line 75) | private MainWindow() {
    method createMainWindow (line 95) | private static MainWindow createMainWindow() {
    method getInstance (line 99) | public static synchronized MainWindow getInstance() {
    method main (line 110) | public static void main(String[] args) {
    method initApplication (line 176) | private static void initApplication() {
    method initComponents (line 193) | private void initComponents() {
    method createCursors (line 220) | private void createCursors() {
    method windowsCreateCursor (line 361) | private BufferedImage windowsCreateCursor(BufferedImage img, int thres...
    method exitActionPerformed (line 413) | public void exitActionPerformed() {
    method executeLongRunningTask (line 447) | public Future<?> executeLongRunningTask(final Runnable runnable, final...
    method executeLongRunningTask (line 451) | public Future<?> executeLongRunningTask(final Runnable runnable, final...
    method showDisabledGlassPane (line 475) | private void showDisabledGlassPane(String caller, String displayMessag...
    method initializeGlassPaneListening (line 483) | private void initializeGlassPaneListening() {
    method hideDisabledGlassPane (line 487) | private void hideDisabledGlassPane(String caller) {//getRootPane().get...
    method updateNamesFromImport (line 495) | public void updateNamesFromImport(String path) {

FILE: src/juicebox/ProcessHelper.java
  class ProcessHelper (line 36) | public class ProcessHelper {
    method ProcessHelper (line 39) | public ProcessHelper() {
    method startNewJavaProcess (line 44) | public Process startNewJavaProcess()
    method createProcess (line 54) | private ProcessBuilder createProcess() {

FILE: src/juicebox/Unused.java
  class Unused (line 31) | class Unused {

FILE: src/juicebox/assembly/AssemblyFileExporter.java
  class AssemblyFileExporter (line 35) | public class AssemblyFileExporter {
    method AssemblyFileExporter (line 43) | public AssemblyFileExporter(AssemblyScaffoldHandler assemblyScaffoldHa...
    method exportAssemblyFile (line 50) | public void exportAssemblyFile() {
    method exportAssembly (line 58) | private void exportAssembly() throws IOException {
    method superscaffoldToString (line 89) | private String superscaffoldToString(List<Integer> scaffoldRow) {
    method buildAssemblyOutputPath (line 101) | private String buildAssemblyOutputPath() {

FILE: src/juicebox/assembly/AssemblyFileImporter.java
  class AssemblyFileImporter (line 39) | public class AssemblyFileImporter {
    method AssemblyFileImporter (line 56) | public AssemblyFileImporter(String assemblyFilePath, boolean modified) {
    method AssemblyFileImporter (line 61) | public AssemblyFileImporter(SuperAdapter superAdapter) {
    method AssemblyFileImporter (line 65) | public AssemblyFileImporter() {
    method importAssembly (line 68) | public void importAssembly() {
    method updateAssemblyScale (line 98) | private int updateAssemblyScale() {
    method parseAssemblyFileNoBundling (line 107) | private void parseAssemblyFileNoBundling() throws IOException {
    method parseAssemblyFile (line 129) | private void parseAssemblyFile() throws IOException {
    method setInitialState (line 243) | private void setInitialState() {
    method setModifiedInitialState (line 260) | private void setModifiedInitialState() {
    method readFile (line 298) | List<String> readFile(String filePath) throws IOException {
    method getAssemblyScaffoldHandler (line 324) | public AssemblyScaffoldHandler getAssemblyScaffoldHandler() {

FILE: src/juicebox/assembly/AssemblyHeatmapHandler.java
  class AssemblyHeatmapHandler (line 39) | public class AssemblyHeatmapHandler {
    method setListOfOSortedAggregateScaffolds (line 46) | public static void setListOfOSortedAggregateScaffolds(List<Scaffold> l...
    method getSuperAdapter (line 51) | public static SuperAdapter getSuperAdapter() {
    method setSuperAdapter (line 55) | public static void setSuperAdapter(SuperAdapter superAdapter) {
    method modifyBlock (line 59) | public static Block modifyBlock(Block block, String key, int binSize, ...
    method getAlteredAsmBin (line 91) | private static int getAlteredAsmBin(int binValue, int binSize) {
    method lookUpOriginalAggregateScaffold (line 109) | private static Scaffold lookUpOriginalAggregateScaffold(long genomicPo...

FILE: src/juicebox/assembly/AssemblyOperationExecutor.java
  class AssemblyOperationExecutor (line 37) | public class AssemblyOperationExecutor {
    method splitContig (line 39) | public static void splitContig(Feature2D originalContig, Feature2D deb...
    method invertSelection (line 45) | public static void invertSelection(SuperAdapter superAdapter, List<Fea...
    method moveSelection (line 53) | public static void moveSelection(SuperAdapter superAdapter, List<Featu...
    method moveAndDisperseSelection (line 61) | public static void moveAndDisperseSelection(SuperAdapter superAdapter,...
    method toggleGroup (line 70) | public static void toggleGroup(SuperAdapter superAdapter, Feature2D up...
    method multiMerge (line 78) | public static void multiMerge(SuperAdapter superAdapter, List<Feature2...
    method multiSplit (line 86) | public static void multiSplit(SuperAdapter superAdapter, List<Feature2...
    method phaseMerge (line 94) | public static void phaseMerge(SuperAdapter superAdapter, List<Integer>...
    method performAssemblyAction (line 102) | private static void performAssemblyAction(final SuperAdapter superAdap...

FILE: src/juicebox/assembly/AssemblyScaffoldHandler.java
  class AssemblyScaffoldHandler (line 39) | public class AssemblyScaffoldHandler {
    method AssemblyScaffoldHandler (line 60) | public AssemblyScaffoldHandler(List<Scaffold> listOfScaffolds, List<Li...
    method AssemblyScaffoldHandler (line 66) | public AssemblyScaffoldHandler(List<Scaffold> listOfScaffolds, List<Li...
    method AssemblyScaffoldHandler (line 73) | public AssemblyScaffoldHandler(AssemblyScaffoldHandler assemblyScaffol...
    method cloneScaffolds (line 83) | private List<Scaffold> cloneScaffolds() {
    method cloneSuperscaffolds (line 91) | private List<List<Integer>> cloneSuperscaffolds() {
    method getListOfScaffolds (line 99) | public List<Scaffold> getListOfScaffolds() {
    method getListOfSuperscaffolds (line 103) | public List<List<Integer>> getListOfSuperscaffolds() {
    method updateAssembly (line 107) | public void updateAssembly(boolean refreshMap) {
    method populateSuperscaffoldFeature2D (line 208) | private Feature2D populateSuperscaffoldFeature2D(long start, long end,...
    method updateSuperscaffolds (line 223) | private void updateSuperscaffolds() {
    method getSignedIndexFromScaffoldFeature2D (line 244) | private int getSignedIndexFromScaffoldFeature2D(Feature2D scaffoldFeat...
    method getUnSignedIndexFromScaffoldFeature2D (line 252) | private int getUnSignedIndexFromScaffoldFeature2D(Feature2D scaffoldFe...
    method getScaffoldFromFeature (line 260) | public Scaffold getScaffoldFromFeature(Feature2D scaffoldFeature2D) {
    method getAggegateScaffoldFromFeature (line 268) | public Scaffold getAggegateScaffoldFromFeature(Feature2D aggregateScaf...
    method editScaffold (line 282) | public void editScaffold(Feature2D targetFeature, Feature2D debrisFeat...
    method editAsm (line 306) | private void editAsm(Scaffold scaffold) {
    method modifyScaffoldId (line 324) | private int modifyScaffoldId(int index, int cutElementId) {
    method editCprops (line 336) | private void editCprops(Scaffold targetScaffold, long startCut, long e...
    method invertSelection (line 404) | public void invertSelection(List<Feature2D> scaffoldFeatures) {
    method moveSelection (line 454) | void moveSelection(List<Feature2D> selectedFeatures, Feature2D upstrea...
    method toggleGroup (line 550) | public void toggleGroup(Feature2D upstreamFeature2D, Feature2D downstr...
    method multiMerge (line 569) | public void multiMerge(Feature2D firstFeature, Feature2D lastFeature) {
    method multiSplit (line 620) | public void multiSplit(List<Feature2D> selectedFeatures) {
    method mergeSuperScaffolds (line 630) | private void mergeSuperScaffolds (int super1, int super2){
    method phaseMerge (line 650) | public void phaseMerge(List<Integer> idListToMerge) {
    method splitSuperscaffold (line 703) | private void splitSuperscaffold(int superscaffoldId, int scaffoldId) {
    method multiSplitSuperscaffolds (line 745) | private void multiSplitSuperscaffolds(int id1, int id2, int super1, in...
    method getSuperscaffoldId (line 791) | private int getSuperscaffoldId(int scaffoldId) {
    method toString (line 806) | @Override
    method getScaffoldFeature2DHandler (line 812) | public Feature2DHandler getScaffoldFeature2DHandler() {
    method getSuperscaffoldFeature2DHandler (line 816) | public Feature2DHandler getSuperscaffoldFeature2DHandler() {
    method getListOfAggregateScaffolds (line 820) | public List<Scaffold> getListOfAggregateScaffolds() {
    method getIntersectingAggregateFeatures (line 824) | public List<Scaffold> getIntersectingAggregateFeatures(long genomicPos...
    method getListOfBundledScaffolds (line 839) | public List<String> getListOfBundledScaffolds() {

FILE: src/juicebox/assembly/AssemblyStateTracker.java
  class AssemblyStateTracker (line 36) | public class AssemblyStateTracker {
    method AssemblyStateTracker (line 44) | public AssemblyStateTracker(AssemblyScaffoldHandler assemblyScaffoldHa...
    method getAssemblyHandler (line 54) | public AssemblyScaffoldHandler getAssemblyHandler() {
    method getNewAssemblyHandler (line 58) | public AssemblyScaffoldHandler getNewAssemblyHandler() {
    method resetState (line 62) | public void resetState() {
    method getInitialAssemblyScaffoldHandler (line 68) | public AssemblyScaffoldHandler getInitialAssemblyScaffoldHandler() {
    method assemblyActionPerformed (line 72) | public void assemblyActionPerformed(AssemblyScaffoldHandler assemblySc...
    method regenerateLayers (line 93) | private void regenerateLayers(boolean refreshMap) {
    method checkUndo (line 101) | public boolean checkUndo() {
    method undo (line 105) | public void undo() {
    method checkRedo (line 115) | public boolean checkRedo() {
    method redo (line 119) | public void redo() {

FILE: src/juicebox/assembly/IGVFeatureCopy.java
  class IGVFeatureCopy (line 38) | public class IGVFeatureCopy implements IGVFeature {
    method IGVFeatureCopy (line 57) | public IGVFeatureCopy(IGVFeature feature) {
    method updateExons (line 76) | public void updateExons(List<Exon> newExons) {
    method updateStrand (line 80) | public void updateStrand(Strand curStrand, boolean inversionState, boo...
    method invertColorFeaturesChk (line 110) | public static void invertColorFeaturesChk() {
    method setStart (line 114) | public void setStart(int newStart) {
    method setEnd (line 118) | public void setEnd(int newEnd) {
    method getStart (line 122) | public int getStart() {
    method getEnd (line 126) | public int getEnd() {
    method getLength (line 130) | public int getLength() {
    method getType (line 134) | public String getType() {
    method getIdentifier (line 138) | public String getIdentifier() {
    method getDescription (line 142) | public String getDescription() {
    method getStrand (line 146) | public Strand getStrand() { return strand; }
    method getAttributes (line 148) | public MultiMap<String, String> getAttributes() {
    method contains (line 152) | public boolean contains(IGVFeature var1) {
    method contains (line 156) | public boolean contains(double var1) {
    method getExons (line 160) | public List<Exon> getExons() {
    method getColor (line 164) | public Color getColor() {
    method getURL (line 168) | public String getURL() {
    method getName (line 172) | public String getName() {
    method getChr (line 176) | public String getChr() {
    method getScore (line 180) | public float getScore() {
    method getValueString (line 184) | public String getValueString(double var1, int mouseX, WindowFunction v...
    method getContig (line 188) | public String getContig() {

FILE: src/juicebox/assembly/OneDimAssemblyTrackLifter.java
  class OneDimAssemblyTrackLifter (line 43) | public class OneDimAssemblyTrackLifter {
    method liftDataArray (line 45) | public static HiCDataPoint[] liftDataArray(HiCDataSource dataSource,
    method liftIGVFeatures (line 152) | public static List<IGVFeatureCopy> liftIGVFeatures(

FILE: src/juicebox/assembly/PsfFileExporter.java
  class PsfFileExporter (line 35) | public class PsfFileExporter {
    method PsfFileExporter (line 41) | public PsfFileExporter(AssemblyScaffoldHandler assemblyScaffoldHandler...
    method exportPsfFile (line 47) | public void exportPsfFile() {
    method exportPsf (line 55) | private void exportPsf() throws IOException {
    method superscaffoldToString (line 79) | private String superscaffoldToString(List<Integer> scaffoldRow) {
    method buildPsfOutputPath (line 97) | private String buildPsfOutputPath() {

FILE: src/juicebox/assembly/PsfFileImporter.java
  class PsfFileImporter (line 39) | public class PsfFileImporter extends AssemblyFileImporter {
    method PsfFileImporter (line 52) | public PsfFileImporter(String psfFilePath, boolean modified) {
    method importAssembly (line 57) | @Override
    method importPsf (line 62) | public void importPsf() {
    method updateAssemblyScale (line 83) | private int updateAssemblyScale() {
    method parsePsfFile (line 92) | private void parsePsfFile() throws IOException {
    method setInitialState (line 127) | private void setInitialState() {
    method setModifiedInitialState (line 144) | private void setModifiedInitialState() {
    method readFile (line 153) | List<String> readFile(String filePath) throws IOException {
    method getAssemblyScaffoldHandler (line 166) | public AssemblyScaffoldHandler getAssemblyScaffoldHandler() {

FILE: src/juicebox/assembly/Scaffold.java
  class Scaffold (line 41) | public class Scaffold extends Feature implements Comparable<Scaffold> {
    method compare (line 45) | public int compare(Scaffold o1, Scaffold o2) {
    method Scaffold (line 75) | public Scaffold(String name, int indexId, long length) {
    method Scaffold (line 83) | public Scaffold(Scaffold scaffold) {
    method getName (line 100) | public String getName() {
    method setName (line 104) | public void setName(String name) {
    method getIndexId (line 108) | public int getIndexId() {
    method setIndexId (line 112) | public void setIndexId(int indexId) {
    method getLength (line 116) | public long getLength() {
    method setLength (line 120) | public void setLength(long length) {
    method getOriginalStart (line 125) | public long getOriginalStart() {
    method setOriginalStart (line 129) | public void setOriginalStart(long originalStart) {
    method getOriginallyInverted (line 133) | public boolean getOriginallyInverted() {
    method setOriginallyInverted (line 137) | public void setOriginallyInverted(boolean originallyInverted) {
    method getCurrentStart (line 142) | public long getCurrentStart() {
    method setCurrentStart (line 146) | public void setCurrentStart(long currentStart) {
    method getInvertedVsInitial (line 151) | public boolean getInvertedVsInitial() {
    method setInvertedVsInitial (line 155) | public void setInvertedVsInitial(boolean invertedVsInitial) {
    method getSignIndexId (line 160) | public int getSignIndexId() {
    method getCurrentFeature2D (line 169) | public Feature2D getCurrentFeature2D() {
    method scale (line 185) | private int scale(long longCoordinate) {
    method isDebris (line 189) | public boolean isDebris() {
    method getOriginalScaffoldName (line 193) | public String getOriginalScaffoldName() {
    method getFragmentNumber (line 201) | public int getFragmentNumber() {
    method getOriginalEnd (line 214) | public long getOriginalEnd() {
    method getCurrentEnd (line 218) | public long getCurrentEnd() {
    method toggleInversion (line 222) | public void toggleInversion() {
    method mergeWith (line 226) | public Scaffold mergeWith(Scaffold scaffold) {
    method getKey (line 244) | @Override
    method deepClone (line 249) | @Override
    method equals (line 254) | @Override
    method toString (line 275) | @Override
    method hashCode (line 280) | @Override
    method compareTo (line 285) | @Override
    method currentContains (line 299) | private boolean currentContains(long x) {
    method originalContains (line 303) | private boolean originalContains(long x) {

FILE: src/juicebox/data/AbstractDatasetReader.java
  class AbstractDatasetReader (line 46) | public abstract class AbstractDatasetReader implements DatasetReader {
    method AbstractDatasetReader (line 50) | AbstractDatasetReader(String path) {
    method getPath (line 54) | public String getPath() {
    method readEigenvector (line 58) | @Override
    method readNormalizationVector (line 109) | @Override

FILE: src/juicebox/data/BinReader.java
  class BinReader (line 32) | public class BinReader {
    method handleBinType (line 33) | public static void handleBinType(LittleEndianInputStream dis, byte typ...
    method handleBothInts (line 74) | private static void handleBothInts(LittleEndianInputStream dis, int bi...
    method handleShortY (line 87) | private static void handleShortY(LittleEndianInputStream dis, int binX...
    method handleShortX (line 101) | private static void handleShortX(LittleEndianInputStream dis, int binX...
    method handleBothShorts (line 115) | private static void handleBothShorts(LittleEndianInputStream dis, int ...

FILE: src/juicebox/data/Block.java
  class Block (line 39) | public class Block {
    method Block (line 45) | public Block(int number, String regionID) {
    method Block (line 51) | public Block(int number, List<ContactRecord> records, String regionID) {
    method getNumber (line 57) | public int getNumber() {
    method getUniqueRegionID (line 61) | public String getUniqueRegionID() {
    method getContactRecords (line 65) | public List<ContactRecord> getContactRecords() {
    method getContactRecords (line 69) | public List<ContactRecord> getContactRecords(double subsampleFraction,...
    method clear (line 85) | public void clear() {

FILE: src/juicebox/data/BlockIndex.java
  class BlockIndex (line 36) | public class BlockIndex {
    method BlockIndex (line 40) | public BlockIndex(int nBlocks) {
    method populateBlocks (line 45) | public void populateBlocks(LittleEndianInputStream dis) throws IOExcep...
    method getBlockNumbers (line 54) | public List<Integer> getBlockNumbers() {
    method getBlockSize (line 58) | public Integer getBlockSize(int num) {
    method getBlock (line 66) | public IndexEntry getBlock(int blockNumber) {

FILE: src/juicebox/data/ChromosomeHandler.java
  class ChromosomeHandler (line 41) | public class ChromosomeHandler {
    method ChromosomeHandler (line 54) | public ChromosomeHandler(List<Chromosome> chromosomes, String genomeID...
    method ChromosomeHandler (line 58) | public ChromosomeHandler(List<Chromosome> chromosomes, String genomeID...
    method isWholeGenomeView (line 87) | public static boolean isWholeGenomeView(Context xContext, Context yCon...
    method cleanUpName (line 92) | public String cleanUpName(String name) {
    method isAllByAll (line 99) | public static boolean isAllByAll(String name) {
    method sort (line 103) | public static void sort(List<Chromosome> indices) {
    method getSetIntersection (line 115) | private static Set<Chromosome> getSetIntersection(Collection<Chromosom...
    method isAllByAll (line 126) | public static boolean isAllByAll(Chromosome chromosome) {
    method generateChromDotSizesBedFile (line 131) | private GenomeWideList<GenericLocus> generateChromDotSizesBedFile() {
    method isGenomeWide (line 145) | private boolean isGenomeWide(Chromosome chromosome) {
    method isGenomeWide (line 149) | private boolean isGenomeWide(String name) {
    method addGenomeWideChromosome (line 153) | public Chromosome addGenomeWideChromosome() {
    method generateAssemblyChromosome (line 158) | public Chromosome generateAssemblyChromosome() {
    method generateCustomChromosomeFromBED (line 174) | public Chromosome generateCustomChromosomeFromBED(File file, int minSi...
    method addCustomChromosome (line 185) | public Chromosome addCustomChromosome(Feature2DList featureList, Strin...
    method getTotalLengthOfAllRegionsInBedFile (line 192) | private int getTotalLengthOfAllRegionsInBedFile(GenomeWideList<Generic...
    method addCustomChromosome (line 205) | private Chromosome addCustomChromosome(GenomeWideList<GenericLocus> re...
    method initializeCleanedChromosomesList (line 215) | private List<Chromosome> initializeCleanedChromosomesList(List<Chromos...
    method initializeInternalVariables (line 225) | private Pair<long[], List<Chromosome[]>> initializeInternalVariables() {
    method getTotalLengthOfAllChromosomes (line 272) | private long getTotalLengthOfAllChromosomes(List<Chromosome> chromosom...
    method getGenomeID (line 281) | public String getGenomeID() {
    method isCustomChromosome (line 285) | public boolean isCustomChromosome(Chromosome chromosome) {
    method isCustomChromosome (line 289) | private boolean isCustomChromosome(int index) {
    method getChromosomeFromName (line 293) | public Chromosome getChromosomeFromName(String name) {
    method doesNotContainChromosome (line 297) | public boolean doesNotContainChromosome(String name) {
    method size (line 301) | public int size() {
    method getChromosomeBoundaries (line 305) | public long[] getChromosomeBoundaries() {
    method getChromosomeArray (line 309) | public Chromosome[] getChromosomeArray() {
    method getChromosomeFromIndex (line 313) | public Chromosome getChromosomeFromIndex(int indx) {
    method getIntersectionWith (line 317) | public ChromosomeHandler getIntersectionWith(ChromosomeHandler handler...
    method getAutosomalChromosomesArray (line 335) | public Chromosome[] getAutosomalChromosomesArray() {
    method getChromosomeArrayWithoutAllByAll (line 339) | public Chromosome[] getChromosomeArrayWithoutAllByAll() {
    method getListOfRegionsInCustomChromosome (line 343) | public GenomeWideList<GenericLocus> getListOfRegionsInCustomChromosome...
    method inferGenomeId (line 347) | public String inferGenomeId() {
    method extractOddOrEvenAutosomes (line 373) | public Chromosome[] extractOddOrEvenAutosomes(boolean extractOdd) {
    class ChromosomeComparator (line 389) | static class ChromosomeComparator implements Comparator<Chromosome> {
      method compare (line 390) | @Override
    method splitAutosomesIntoHalves (line 398) | public Pair<Chromosome[], Chromosome[]> splitAutosomesIntoHalves() {
    method splitAutosomesAndSkipByTwos (line 442) | public Pair<Chromosome[], Chromosome[]> splitAutosomesAndSkipByTwos() {
    method chromosomeListToArray (line 473) | private Chromosome[] chromosomeListToArray(List<Chromosome> chromosome...

FILE: src/juicebox/data/CombinedDatasetReader.java
  class CombinedDatasetReader (line 48) | public class CombinedDatasetReader implements DatasetReader {
    method CombinedDatasetReader (line 54) | public CombinedDatasetReader(List<DatasetReaderV2> readers) {
    method read (line 58) | @Override
    method isActive (line 80) | @Override
    method setActive (line 93) | @Override
    method getVersion (line 98) | @Override
    method getPath (line 104) | @Override
    method getCheckBoxes (line 110) | @Override
    method getNormalizationVector (line 120) | @Override
    method getDepthBase (line 125) | @Override
    method readMatrix (line 135) | @Override
    method readNormalizedBlock (line 161) | @Override
    method getBlockNumbers (line 185) | @Override
    method getBlockSize (line 199) | @Override
    method readEigenvector (line 217) | @Override
    method readNormalizationVector (line 223) | @Override
    method readNormalizationVectorPart (line 228) | @Override
    method readExpectedVectorPart (line 233) | @Override
    method mergeDatasets (line 244) | private Dataset mergeDatasets(List<Dataset> datasetList) {
    method mergeExpectedValues (line 377) | private ExpectedValueFunction mergeExpectedValues(List<ExpectedValueFu...
    method mergeStatistics (line 409) | private String mergeStatistics(List<String> statisticsList) {
    method mergeGraphs (line 459) | private String mergeGraphs(List<String> graphsList) {
    method mergeMatrices (line 526) | private Matrix mergeMatrices(List<Matrix> matrixList) {
    method mergeBlocks (line 616) | private Block mergeBlocks(List<Block> blockList, String blockKey) {

FILE: src/juicebox/data/CombinedExpectedValueFunction.java
  class CombinedExpectedValueFunction (line 40) | public class CombinedExpectedValueFunction implements ExpectedValueFunct...
    method CombinedExpectedValueFunction (line 45) | public CombinedExpectedValueFunction(ExpectedValueFunction densityFunc...
    method addDensityFunction (line 50) | public void addDensityFunction(ExpectedValueFunction densityFunction) {
    method getExpectedValue (line 55) | @Override
    method getExpectedValuesWithNormalization (line 64) | @Override
    method getExpectedValuesNoNormalization (line 83) | @Override
    method getLength (line 98) | @Override
    method getNormalizationType (line 103) | @Override
    method getUnit (line 108) | @Override
    method getBinSize (line 113) | @Override

FILE: src/juicebox/data/ContactRecord.java
  class ContactRecord (line 35) | public class ContactRecord implements Comparable<ContactRecord> {
    method ContactRecord (line 52) | public ContactRecord(int binX, int binY, float counts) {
    method incrementCount (line 58) | public void incrementCount(float score) {
    method getBinX (line 63) | public int getBinX() {
    method getBinY (line 67) | public int getBinY() {
    method getCounts (line 71) | public float getCounts() {
    method compareTo (line 75) | @Override
    method toString (line 84) | public String toString() {
    method hashCode (line 88) | @Override
    method equals (line 93) | @Override
    method getKey (line 105) | public String getKey(NormalizationType normalizationType) {

FILE: src/juicebox/data/CustomMatrixZoomData.java
  class CustomMatrixZoomData (line 48) | public class CustomMatrixZoomData extends MatrixZoomData {
    method CustomMatrixZoomData (line 55) | public CustomMatrixZoomData(Chromosome chr1, Chromosome chr2, Chromoso...
    method expandAvailableZoomDatas (line 64) | public void expandAvailableZoomDatas(String regionKey, MatrixZoomData ...
    method modifyBlock (line 70) | private static Block modifyBlock(Block block, String key, MatrixZoomDa...
    method getNormalizedBlocksOverlapping (line 104) | @Override
    method printFullDescription (line 118) | @Override
    method addNormalizedBlocksToListByGenomeCoordinates (line 125) | private List<Block> addNormalizedBlocksToListByGenomeCoordinates(long ...
    method actuallyLoadGivenBlocks (line 222) | private void actuallyLoadGivenBlocks(final List<Block> blockList, fina...
    method getBoundariesOfCustomChromosomeX (line 317) | public List<Long> getBoundariesOfCustomChromosomeX() {
    method getBoundariesOfCustomChromosomeY (line 321) | public List<Long> getBoundariesOfCustomChromosomeY() {
    method getExpected (line 326) | public double getExpected(int binX, int binY, ExpectedValueFunction df) {
    method getAverageCount (line 355) | @Override
    method getRTreeHandlerIntersectingFeatures (line 361) | public List<Pair<GenericLocus, GenericLocus>> getRTreeHandlerIntersect...

FILE: src/juicebox/data/Dataset.java
  class Dataset (line 53) | public class Dataset {
    method Dataset (line 72) | public Dataset(DatasetReader reader) {
    method getMatrix (line 80) | public Matrix getMatrix(Chromosome chr1, Chromosome chr2) {
    method addDynamicResolution (line 117) | public void addDynamicResolution(int newRes) {
    method getSubcompartments (line 137) | public ResourceLocator getSubcompartments() {
    method getSuperLoops (line 160) | public ResourceLocator getSuperLoops() {
    method getPeaks (line 184) | public ResourceLocator getPeaks() {
    method getBlocks (line 215) | public ResourceLocator getBlocks() {
    method setAttributes (line 246) | public void setAttributes(Map<String, String> map) {
    method getNormalizationTypes (line 256) | public List<NormalizationType> getNormalizationTypes() {
    method setNormalizationTypes (line 260) | public void setNormalizationTypes(List<NormalizationType> normalizatio...
    method addNormalizationType (line 264) | public void addNormalizationType(NormalizationType type) {
    method getNumberZooms (line 268) | public int getNumberZooms(HiC.Unit unit) {
    method getZoom (line 273) | public HiCZoom getZoom(HiC.Unit unit, int index) {
    method getZoomForBPResolution (line 277) | public HiCZoom getZoomForBPResolution(Integer resolution) {
    method getExpectedValues (line 291) | public ExpectedValueFunction getExpectedValues(HiCZoom zoom, Normaliza...
    method getExpectedValuesOrExit (line 297) | public ExpectedValueFunction getExpectedValuesOrExit(HiCZoom zoom, Nor...
    method getExpectedValueFunctionMap (line 306) | public Map<String, ExpectedValueFunction> getExpectedValueFunctionMap() {
    method setExpectedValueFunctionMap (line 310) | public void setExpectedValueFunctionMap(Map<String, ExpectedValueFunct...
    method getChromosomeHandler (line 314) | public ChromosomeHandler getChromosomeHandler() {
    method setChromosomeHandler (line 318) | public void setChromosomeHandler(ChromosomeHandler chromosomeHandler) {
    method getVersion (line 322) | public int getVersion() {
    method getGenomeId (line 326) | public String getGenomeId() {
    method setGenomeId (line 330) | public void setGenomeId(String genomeId) {
    method getRestrictionEnzyme (line 336) | public String getRestrictionEnzyme() {
    method setRestrictionEnzyme (line 340) | void setRestrictionEnzyme(int nSites) {
    method getSoftware (line 344) | private String getSoftware() {
    method getHiCFileScalingFactor (line 349) | public String getHiCFileScalingFactor() {
    method getStatistics (line 354) | public String getStatistics() {
    method convertStats (line 363) | private String convertStats(String oldStats) {
    method getGraphs (line 783) | public String getGraphs() {
    method getBpZooms (line 788) | public List<HiCZoom> getBpZooms() {
    method setBpZooms (line 795) | public void setBpZooms(int[] bpBinSizes) {
    method getFragZooms (line 806) | public List<HiCZoom> getFragZooms() {
    method setFragZooms (line 810) | public void setFragZooms(int[] fragBinSizes) {
    method hasFrags (line 821) | public boolean hasFrags() {
    method getFragmentCounts (line 825) | public Map<String, Integer> getFragmentCounts() {
    method setFragmentCounts (line 829) | public void setFragmentCounts(Map<String, Integer> map) {
    method getNextZoom (line 841) | public HiCZoom getNextZoom(HiCZoom zoom, boolean useIncreasingOrder) {
    method getEigenvector (line 864) | public double[] getEigenvector(Chromosome chr, HiCZoom zoom, int numbe...
    method getNormalizationVector (line 888) | public NormalizationVector getNormalizationVector(int chrIdx, HiCZoom ...
    method getPartNormalizationVector (line 910) | public NormalizationVector getPartNormalizationVector(int chrIdx, HiCZ...
    method addNormalizationVectorDirectlyToRAM (line 927) | public void addNormalizationVectorDirectlyToRAM(NormalizationVector no...
    method findRestrictionEnzyme (line 931) | private String findRestrictionEnzyme(int sites) {
    method setAttributes (line 972) | public void setAttributes(String key, String value) {
    method getCheckBoxes (line 979) | public List<JCheckBox> getCheckBoxes(List<ActionListener> actionListen...
    method getAllPossibleResolutions (line 983) | public List<HiCZoom> getAllPossibleResolutions() {
    method getNormalizationHandler (line 991) | public NormalizationHandler getNormalizationHandler() {
    method getDepthBase (line 995) | public int getDepthBase() {
    method clearCache (line 999) | public void clearCache(boolean onlyClearInter) {
    method clearCache (line 1013) | public void clearCache(boolean onlyClearInter, HiCZoom zoom) {

FILE: src/juicebox/data/DatasetReader.java
  type DatasetReader (line 42) | public interface DatasetReader {
    method isActive (line 44) | boolean isActive();
    method setActive (line 46) | void setActive(boolean status);
    method getVersion (line 48) | int getVersion();
    method read (line 50) | Dataset read() throws IOException;
    method readMatrix (line 52) | Matrix readMatrix(String key) throws IOException;
    method readNormalizedBlock (line 54) | Block readNormalizedBlock(int blockNumber, MatrixZoomData zd, Normaliz...
    method getBlockNumbers (line 62) | List<Integer> getBlockNumbers(MatrixZoomData matrixZoomData);
    method getBlockSize (line 64) | Integer getBlockSize(MatrixZoomData matrixZoomData, int blockNum);
    method readEigenvector (line 66) | double[] readEigenvector(String chrName, HiCZoom zoom, int number, Str...
    method readNormalizationVector (line 68) | NormalizationVector readNormalizationVector(NormalizationType type, in...
    method readNormalizationVectorPart (line 70) | NormalizationVector readNormalizationVectorPart(NormalizationType type...
    method readExpectedVectorPart (line 72) | ListOfDoubleArrays readExpectedVectorPart(long position, long nVals) t...
    method getPath (line 74) | String getPath();
    method getCheckBoxes (line 76) | List<JCheckBox> getCheckBoxes(List<ActionListener> actionListeners);
    method getNormalizationVector (line 78) | NormalizationVector getNormalizationVector(int chr1Idx, HiCZoom zoom, ...
    method getDepthBase (line 80) | int getDepthBase();

FILE: src/juicebox/data/DatasetReaderFactory.java
  class DatasetReaderFactory (line 47) | public class DatasetReaderFactory {
    method getReader (line 49) | public static DatasetReader getReader(List<String> fileList) throws IO...
    method getReaderForFile (line 67) | private static DatasetReaderV2 getReaderForFile(String file) throws IO...
    method getMagicString (line 83) | static String getMagicString(String path) throws IOException {

FILE: src/juicebox/data/DatasetReaderV2.java
  class DatasetReaderV2 (line 58) | public class DatasetReaderV2 extends AbstractDatasetReader {
    method DatasetReaderV2 (line 80) | public DatasetReaderV2(String path) throws IOException {
    method read (line 85) | @Override
    method getValidStream (line 239) | private SeekableStream getValidStream() throws IOException {
    method getCheckBoxes (line 247) | @Override
    method getNormalizationVector (line 265) | @Override
    method getDepthBase (line 270) | @Override
    method readMatrixZoomData (line 275) | private Pair<MatrixZoomData, Long> readMatrixZoomData(Chromosome chr1,...
    method checkGraphs (line 332) | private String checkGraphs(String graphs) {
    method readGraphs (line 374) | private String readGraphs(String graphFileName) throws IOException {
    method isActive (line 393) | @Override
    method setActive (line 398) | @Override
    method getVersion (line 403) | @Override
    method getNviHeaderPosition (line 408) | public long getNviHeaderPosition() {
    method readFooter (line 412) | private void readFooter(long position) throws IOException {
    method readVectorOfFloats (line 649) | private long readVectorOfFloats(LittleEndianInputStream dis, long nVal...
    method readVectorOfDoubles (line 657) | private long readVectorOfDoubles(LittleEndianInputStream dis, long nVa...
    method readSites (line 665) | private int[] readSites(long position, int nSites) throws IOException {
    method readMatrix (line 676) | @Override
    method getFragCount (line 726) | int getFragCount(Chromosome chromosome) {
    method retrieveFragmentSitesFromCache (line 736) | private synchronized int[] retrieveFragmentSitesFromCache(Chromosome c...
    method getBlockNumbers (line 750) | @Override
    method getBlockSize (line 756) | @Override
    method getNormVectorIndex (line 768) | public Map<String, LargeIndexEntry> getNormVectorIndex() {
    method getNormFilePosition (line 772) | public long getNormFilePosition() {
    class FragIndexEntry (line 776) | static class FragIndexEntry {
      method FragIndexEntry (line 780) | FragIndexEntry(long position, int nSites) {
    method readNormalizationVector (line 787) | @Override
    method readNormalizationVectorPart (line 830) | @Override
    method readExpectedVectorPart (line 872) | @Override
    method seekAndFullyReadCompressedBytes (line 890) | private byte[] seekAndFullyReadCompressedBytes(IndexEntry idx) throws ...
    method seekAndFullyReadLargeCompressedBytes (line 899) | private List<byte[]> seekAndFullyReadLargeCompressedBytes(LargeIndexEn...
    method readNormalizedBlock (line 916) | @Override
    method readBlock (line 961) | private Block readBlock(int blockNumber, MatrixZoomData zd) throws IOE...
    method decompress (line 1031) | private byte[] decompress(byte[] compressedBytes) {

FILE: src/juicebox/data/DynamicBlock.java
  class DynamicBlock (line 32) | public class DynamicBlock extends Block {
    method DynamicBlock (line 35) | public DynamicBlock(int number, ContactRecord record, String regionID) {
    method getContactRecords (line 40) | @Override
    method addContactRecord (line 45) | public void addContactRecord(ContactRecord cr) {

FILE: src/juicebox/data/DynamicBlockIndex.java
  class DynamicBlockIndex (line 36) | public class DynamicBlockIndex extends BlockIndex {
    method DynamicBlockIndex (line 44) | public DynamicBlockIndex(SeekableStream stream, int numBlocks, int max...
    method getBlockNumbers (line 53) | @Override
    method getBlock (line 59) | @Override
    method searchForBlockIndexEntry (line 96) | private IndexEntry searchForBlockIndexEntry(int blockNumber, long boun...

FILE: src/juicebox/data/DynamicMatrixZoomData.java
  class DynamicMatrixZoomData (line 32) | public class DynamicMatrixZoomData extends MatrixZoomData {
    method DynamicMatrixZoomData (line 42) | public DynamicMatrixZoomData(HiCZoom zoom, MatrixZoomData higherResZD) {
    method getNormalizedBlocksOverlapping (line 48) | @Override
    method createBlocksForLowerRes (line 61) | private List<Block> createBlocksForLowerRes(List<Block> highResBlocks,...
    method printFullDescription (line 114) | @Override

FILE: src/juicebox/data/ExpectedValueFunction.java
  type ExpectedValueFunction (line 36) | public interface ExpectedValueFunction {
    method getExpectedValue (line 38) | double getExpectedValue(int chrIdx, long distance);
    method getLength (line 40) | long getLength();
    method getNormalizationType (line 42) | NormalizationType getNormalizationType();
    method getUnit (line 44) | HiC.Unit getUnit();
    method getBinSize (line 46) | int getBinSize();
    method getExpectedValuesNoNormalization (line 48) | ListOfDoubleArrays getExpectedValuesNoNormalization();
    method getExpectedValuesWithNormalization (line 50) | ListOfDoubleArrays getExpectedValuesWithNormalization(int chrIdx);

FILE: src/juicebox/data/ExpectedValueFunctionImpl.java
  class ExpectedValueFunctionImpl (line 42) | public class ExpectedValueFunctionImpl implements ExpectedValueFunction {
    method ExpectedValueFunctionImpl (line 62) | public ExpectedValueFunctionImpl(NormalizationType type, HiC.Unit unit...
    method ExpectedValueFunctionImpl (line 73) | public ExpectedValueFunctionImpl(NormalizationType type, HiC.Unit unit...
    method getKey (line 85) | public static String getKey(HiCZoom zoom, NormalizationType normType) {
    method getNormFactors (line 90) | public Map<Integer, Double> getNormFactors() {
    method getExpectedValuesNoNormalization (line 100) | @Override
    method getExpectedValue (line 122) | @Override
    method getExpectedValuesWithNormalization (line 170) | @Override
    method getLength (line 197) | @Override
    method getNormalizationType (line 202) | @Override
    method getUnit (line 207) | @Override
    method getBinSize (line 212) | @Override

FILE: src/juicebox/data/GeneLocation.java
  class GeneLocation (line 28) | public class GeneLocation {
    method GeneLocation (line 33) | public GeneLocation(Chromosome chromosome, int centerPosition) {
    method getCenterPosition (line 38) | public int getCenterPosition() {
    method getChromosome (line 42) | public Chromosome getChromosome() {

FILE: src/juicebox/data/HiCFileLoader.java
  class HiCFileLoader (line 52) | public class HiCFileLoader {
    method loadMenuItemActionPerformed (line 59) | public static File loadMenuItemActionPerformed(SuperAdapter superAdapt...
    method loadFromRecentActionPerformed (line 83) | public static void loadFromRecentActionPerformed(SuperAdapter superAda...
    method loadFromURLActionPerformed (line 92) | public static void loadFromURLActionPerformed(SuperAdapter superAdapte...
    method loadFromListActionPerformed (line 115) | public static void loadFromListActionPerformed(SuperAdapter superAdapt...
    method initProperties (line 129) | private static void initProperties() {
    method loadPropertiesViaURL (line 163) | private static void loadPropertiesViaURL(String url) throws IOException {
    method changeJuiceboxPropertiesFile (line 171) | public static void changeJuiceboxPropertiesFile(String newURL) {
    method setPropertiesFileURL (line 195) | private static void setPropertiesFileURL(String propertiesFileURL) {

FILE: src/juicebox/data/HiCFileTools.java
  class HiCFileTools (line 43) | public class HiCFileTools {
    method extractDatasetForCLT (line 45) | public static Dataset extractDatasetForCLT(List<String> files, boolean...
    method extractDatasetReaderForCLT (line 81) | public static DatasetReader extractDatasetReaderForCLT(List<String> fi...
    method loadChromosomes (line 120) | public static ChromosomeHandler loadChromosomes(String idOrFile) {
    method filterResolutions (line 189) | public static List<Integer> filterResolutions(List<HiCZoom> availableZ...
    method closestValue (line 204) | private static int closestValue(int val, TreeSet<Integer> valSet) {
    method getChromosomeSetIntersection (line 227) | public static ChromosomeHandler getChromosomeSetIntersection(Chromosom...
    method getZoomSetIntersection (line 231) | public static Set<HiCZoom> getZoomSetIntersection(Collection<HiCZoom> ...
    method stringToChromosomes (line 248) | public static ChromosomeHandler stringToChromosomes(List<String> chrom...
    method equivalentChromosome (line 276) | public static boolean equivalentChromosome(String token, Chromosome ch...
    method openWriter (line 282) | public static PrintWriter openWriter(File file) {
    method extractLocalBoundedRegion (line 294) | public static RealMatrix extractLocalBoundedRegion(MatrixZoomData zd, ...
    method extractLocalBoundedRegion (line 299) | public static RealMatrix extractLocalBoundedRegion(MatrixZoomData zd, ...
    method extractLocalBoundedRegion (line 310) | public static RealMatrix extractLocalBoundedRegion(MatrixZoomData zd, ...
    method getAllRegionBlocks (line 356) | public static List<Block> getAllRegionBlocks(MatrixZoomData zd, long b...
    method extractChromosomeExpectedVector (line 385) | public static ListOfDoubleArrays extractChromosomeExpectedVector(Datas...
    method triggerNormError (line 397) | public static void triggerNormError(NormalizationType normalizationTyp...
    method createValidDirectory (line 409) | public static File createValidDirectory(String directoryPath) {
    method getTruncatedText (line 420) | public static String getTruncatedText(String text, int maxLengthEntryN...
    method isDropboxURL (line 430) | public static boolean isDropboxURL(String url) {
    method cleanUpDropboxURL (line 434) | public static String cleanUpDropboxURL(String url) {
    method getMatrixZoomData (line 439) | public static MatrixZoomData getMatrixZoomData(Dataset ds, Chromosome ...
    method getMatrixZoomData (line 445) | public static MatrixZoomData getMatrixZoomData(Dataset ds, Chromosome ...

FILE: src/juicebox/data/Matrix.java
  class Matrix (line 44) | public class Matrix {
    method compare (line 55) | @Override
    method Matrix (line 68) | public Matrix(int chr1, int chr2, List<MatrixZoomData> zoomDataList) {
    method createCustomChromosomeMatrix (line 74) | public static Matrix createCustomChromosomeMatrix(Chromosome chr1, Chr...
    method initZoomDataMap (line 146) | private void initZoomDataMap(List<MatrixZoomData> zoomDataList) {
    method generateKey (line 171) | public static String generateKey(int chr1, int chr2) {
    method createAssemblyChromosomeMatrix (line 176) | public static Matrix createAssemblyChromosomeMatrix(ChromosomeHandler ...
    method createDynamicResolutionMZD (line 245) | public void createDynamicResolutionMZD(Pair<Integer, Integer> resPair,...
    method getIndicesFromSubChromosomes (line 257) | private static List<Chromosome> getIndicesFromSubChromosomes(final Chr...
    method updateCustomZoomDataRegions (line 280) | private static void updateCustomZoomDataRegions(Chromosome chr1, Chrom...
    method generateKey (line 290) | public static String generateKey(Chromosome chr1, Chromosome chr2) {
    method getKey (line 296) | public String getKey() {
    method getFirstZoomData (line 300) | public MatrixZoomData getFirstZoomData() {
    method getFirstZoomData (line 308) | public MatrixZoomData getFirstZoomData(HiC.Unit unit) {
    method getFirstPearsonZoomData (line 316) | public MatrixZoomData getFirstPearsonZoomData(HiC.Unit unit) {
    method getZoomData (line 325) | public MatrixZoomData getZoomData(HiCZoom zoom) {
    method getZoomData (line 360) | public MatrixZoomData getZoomData(int index) {
    method getNumBPResolutions (line 372) | public int getNumBPResolutions() {
    method getNumFragResolutions (line 376) | public int getNumFragResolutions() {
    method isNotIntra (line 380) | public boolean isNotIntra() {
    method getChr1Idx (line 384) | public int getChr1Idx() {
    method getChr2Idx (line 388) | public int getChr2Idx() {
    method setBpBinSizes (line 392) | public void setBpBinSizes(ArrayList<Integer> bpBinSizes) {
    method setFragBinSizes (line 396) | public void setFragBinSizes(ArrayList<Integer> fragBinSizes) {

FILE: src/juicebox/data/MatrixZoomData.java
  class MatrixZoomData (line 76) | public class MatrixZoomData {
    method MatrixZoomData (line 111) | public MatrixZoomData(Chromosome chr1, Chromosome chr2, HiCZoom zoom, ...
    method getChr1 (line 160) | public Chromosome getChr1() {
    method getChr2 (line 164) | public Chromosome getChr2() {
    method getXGridAxis (line 168) | public HiCGridAxis getXGridAxis() {
    method getYGridAxis (line 172) | public HiCGridAxis getYGridAxis() {
    method getBinSize (line 176) | public int getBinSize() {
    method getChr1Idx (line 180) | public int getChr1Idx() {
    method getChr2Idx (line 184) | public int getChr2Idx() {
    method getZoom (line 188) | public HiCZoom getZoom() {
    method getBlockColumnCount (line 192) | public int getBlockColumnCount() {
    method getBlockBinCount (line 196) | public int getBlockBinCount() { return blockBinCount; }
    method getKey (line 198) | public String getKey() {
    method getKey (line 203) | private String getKey(int chr1, int chr2) {
    method getBlockKey (line 207) | public String getBlockKey(int blockNumber, NormalizationType no) {
    method getNormLessBlockKey (line 211) | public String getNormLessBlockKey(Block block) {
    method getBlockKey (line 215) | private String getBlockKey(int blockNumber, NormalizationType no, int ...
    method getColorScaleKey (line 219) | public String getColorScaleKey(MatrixType displayOption, Normalization...
    method getTileKey (line 223) | public String getTileKey(int tileRow, int tileColumn, MatrixType displ...
    method getNormalizedBlocksOverlapping (line 238) | public List<Block> getNormalizedBlocksOverlapping(long binX1, long bin...
    method getBlockNumberVersion9FromPADAndDepth (line 289) | public int getBlockNumberVersion9FromPADAndDepth(int positionAlongDiag...
    method populateBlocksToLoadV9 (line 293) | private void populateBlocksToLoadV9(int positionAlongDiagonal, int dep...
    method addNormalizedBlocksToListV9 (line 305) | private List<Block> addNormalizedBlocksToListV9(final List<Block> bloc...
    method populateBlocksToLoad (line 335) | private void populateBlocksToLoad(int r, int c, NormalizationType no, ...
    method addNormalizedBlocksToList (line 356) | private List<Block> addNormalizedBlocksToList(final List<Block> blockL...
    method addNormalizedBlocksToList (line 386) | private List<Block> addNormalizedBlocksToList(final List<Block> blockL...
    method addNormalizedBlocksToListAssembly (line 410) | private List<Block> addNormalizedBlocksToListAssembly(final List<Block...
    method actuallyLoadGivenBlocks (line 527) | private void actuallyLoadGivenBlocks(final List<Block> blockList, Set<...
    method actuallyLoadGivenBlocks (line 583) | private void actuallyLoadGivenBlocks(final List<Block> blockList, Set<...
    method getObservedValue (line 646) | public float getObservedValue(int binX, int binY, NormalizationType no...
    method computeEigenvector (line 708) | public double[] computeEigenvector(ExpectedValueFunction df, int which) {
    method getSubsetOfMatrix (line 739) | private RealMatrix getSubsetOfMatrix(int[] newPosToOrig, int subsetN, ...
    method getMapNewPosToOriginal (line 754) | private int[] getMapNewPosToOriginal(int dim, BitSet bitSet) {
    method getNormSquared (line 765) | public BasicMatrix getNormSquared(NormalizationType normalizationType) {
    method computeNormSquared (line 779) | private BasicMatrix computeNormSquared(NormalizationType normalization...
    method getPearsons (line 800) | public BasicMatrix getPearsons(ExpectedValueFunction df) {
    method getPearsonValue (line 825) | public float getPearsonValue(int binX, int binY, NormalizationType typ...
    method computePearsons (line 841) | private BasicMatrix computePearsons(ExpectedValueFunction df) {
    method populateOEMatrixAndBitset (line 868) | private void populateOEMatrixAndBitset(double[][] oeMatrix, BitSet bit...
    method getDescription (line 893) | public String getDescription() {
    method printFullDescription (line 897) | public void printFullDescription() {
    method getBlockNumbers (line 909) | public List<Integer> getBlockNumbers() {
    method getBlockNumbersForRegionFromGenomePosition (line 920) | List<Integer> getBlockNumbersForRegionFromGenomePosition(long[] region...
    method getBlockNumbersForRegionFromBinPosition (line 930) | private List<Integer> getBlockNumbersForRegionFromBinPosition(long[] r...
    method dump (line 963) | public void dump(PrintWriter printWriter, LittleEndianOutputStream les...
    method dump1DTrackFromCrossHairAsWig (line 1137) | public void dump1DTrackFromCrossHairAsWig(PrintWriter printWriter, lon...
    method getAverageCount (line 1203) | public double getAverageCount() {
    method getSumCount (line 1207) | public double getSumCount() {
    method setAverageCount (line 1216) | public void setAverageCount(double averageCount) {
    method setSumCount (line 1220) | public void setSumCount(double sumCount) {
    method clearCache (line 1224) | public void clearCache(boolean onlyClearInter) {
    method getNewContactRecordIterator (line 1235) | private Iterator<ContactRecord> getNewContactRecordIterator() {
    method getIteratorContainer (line 1240) | public IteratorContainer getIteratorContainer() {
    method getFromFileIteratorContainer (line 1247) | public IteratorContainer getFromFileIteratorContainer() {
    method mergeAndWriteBlocks (line 1252) | public Pair<List<IndexEntry>,ExpectedValueCalculation> mergeAndWriteBl...
    method mergeAndWriteBlocks (line 1283) | public Pair<List<IndexEntry>,ExpectedValueCalculation> mergeAndWriteBl...
    method writeBlockChunk (line 1411) | private void writeBlockChunk(int startBlock, int endBlock, List<Intege...
    method writeBlock (line 1439) | protected void writeBlock(Block block, LittleEndianOutputStream los, D...
    method compress (line 1617) | protected byte[] compress(byte[] data, Deflater compressor) {
    method computeExpected (line 1647) | public ExpectedValueCalculation computeExpected(boolean calculateExpec...
    method calculateExpectedBlockChunk (line 1750) | private void calculateExpectedBlockChunk(int startBlock, int endBlock,...
    method calcExpectedBlock (line 1766) | protected void calcExpectedBlock(Block block, ExpectedValueCalculation...

FILE: src/juicebox/data/NormFactorMapReader.java
  class NormFactorMapReader (line 33) | public class NormFactorMapReader {
    method NormFactorMapReader (line 37) | public NormFactorMapReader(int nFactors, int version, LittleEndianInpu...
    method getNormFactors (line 52) | public Map<Integer, Double> getNormFactors() {
    method getOffset (line 56) | public int getOffset() {

FILE: src/juicebox/data/NormalizationVector.java
  class NormalizationVector (line 42) | public class NormalizationVector {
    method NormalizationVector (line 51) | public NormalizationVector(NormalizationType type, int chrIdx, HiC.Uni...
    method NormalizationVector (line 59) | public NormalizationVector(NormalizationType type, int chrIdx, HiC.Uni...
    method getKey (line 64) | public static String getKey(NormalizationType type, int chrIdx, String...
    method getChrIdx (line 68) | public int getChrIdx() {
    method getResolution (line 72) | public int getResolution() {
    method getKey (line 76) | public String getKey() {
    method getData (line 80) | public ListOfDoubleArrays getData() {
    method doesItNeedToBeScaledTo (line 84) | public boolean doesItNeedToBeScaledTo() {
    method mmbaScaleToVector (line 88) | public NormalizationVector mmbaScaleToVector(Dataset ds) {
    method mmbaScaleToVector (line 95) | public NormalizationVector mmbaScaleToVector(IteratorContainer ic) {

FILE: src/juicebox/data/ZoomAction.java
  class ZoomAction (line 33) | public class ZoomAction {
    method ZoomAction (line 42) | public ZoomAction(String chromosomeX, String chromosomeY, HiCZoom hiCZ...
    method equals (line 55) | public boolean equals(ZoomAction other) {
    method getChromosomeX (line 59) | public String getChromosomeX() {
    method getChromosomeY (line 63) | public String getChromosomeY() {
    method getHiCZoom (line 67) | public HiCZoom getHiCZoom() {
    method getGenomeX (line 71) | public long getGenomeX() {
    method getGenomeY (line 75) | public long getGenomeY() {
    method getScaleFactor (line 79) | public double getScaleFactor() {
    method setScaleFactor (line 83) | public void setScaleFactor(double newScaleFactor) {
    method getResetZoom (line 87) | public boolean getResetZoom() {
    method getZoomCallType (line 91) | public HiC.ZoomCallType getZoomCallType() {
    method getResolutionLocked (line 95) | public int getResolutionLocked() {

FILE: src/juicebox/data/ZoomActionTracker.java
  class ZoomActionTracker (line 32) | public class ZoomActionTracker {
    method undoZoom (line 38) | public void undoZoom() {
    method redoZoom (line 45) | public void redoZoom() {
    method validateUndoZoom (line 52) | public boolean validateUndoZoom() {
    method validateRedoZoom (line 56) | public boolean validateRedoZoom() {
    method addZoomState (line 60) | public void addZoomState(ZoomAction newZoomAction) {
    method clear (line 69) | public void clear() {
    method equals (line 75) | public boolean equals(ZoomActionTracker other) {
    method getCurrentZoomAction (line 87) | public ZoomAction getCurrentZoomAction() {
    method setCurrentZoomAction (line 91) | private void setCurrentZoomAction(ZoomAction zoomAction) {
    method getUndoZoomActions (line 95) | private Stack<ZoomAction> getUndoZoomActions() {
    method getRedoZoomActions (line 99) | private Stack<ZoomAction> getRedoZoomActions() {

FILE: src/juicebox/data/anchor/BEDTools.java
  class BEDTools (line 32) | class BEDTools {
    method merge (line 42) | public static List<GenericLocus> merge(List<GenericLocus> anchors) {
    method mergeTakeSmaller (line 62) | public static List<GenericLocus> mergeTakeSmaller(List<GenericLocus> a...
    method intersect (line 92) | public static List<GenericLocus> intersect(List<GenericLocus> topAncho...
    method intersection (line 155) | private static GenericLocus intersection(GenericLocus anchor1, Generic...
    method preservativeIntersect (line 195) | public static List<GenericLocus> preservativeIntersect(List<GenericLoc...
    method preservativeIntersection (line 258) | private static GenericLocus preservativeIntersection(GenericLocus anch...

FILE: src/juicebox/data/anchor/GenericLocus.java
  class GenericLocus (line 34) | public class GenericLocus extends Feature implements Comparable<GenericL...
    method GenericLocus (line 50) | public GenericLocus(String chr, long x1, long x2) {
    method GenericLocus (line 62) | public GenericLocus(String chr, int x1, int x2, String name) {
    method GenericLocus (line 76) | public GenericLocus(String chrIndex, long x1, long x2, List<Feature2D>...
    method getKey (line 82) | @Override
    method deepClone (line 87) | @Override
    method cloneToMotifAnchor (line 94) | public Feature cloneToMotifAnchor() {
    method getChr (line 103) | public String getChr() {
    method getX1 (line 110) | public long getX1() {
    method getX2 (line 117) | public long getX2() {
    method getWidth (line 124) | public int getWidth() {
    method widenMargins (line 133) | public void widenMargins(int width) {
    method contains (line 142) | public boolean contains(long x) {
    method isStrictlyToTheLeftOf (line 150) | public boolean isStrictlyToTheLeftOf(GenericLocus anchor) {
    method isStrictlyToTheRightOf (line 158) | public boolean isStrictlyToTheRightOf(GenericLocus anchor) {
    method hasOverlapWith (line 166) | public boolean hasOverlapWith(GenericLocus anchor) {
    method mergeWith (line 171) | public void mergeWith(GenericLocus anchor) {
    method mergeWithTakeSmaller (line 182) | public void mergeWithTakeSmaller(GenericLocus anchor) {
    method toString (line 201) | @Override
    method equals (line 207) | @Override
    method hashCode (line 219) | @Override
    method compareTo (line 224) | @Override
    method addFeatureReferencesFrom (line 235) | public void addFeatureReferencesFrom(GenericLocus anchor) {
    method updateOriginalFeatures (line 240) | public void updateOriginalFeatures(String prefix) {
    method getOriginalFeatures1 (line 253) | public List<Feature2D> getOriginalFeatures1() {
    method getOriginalFeatures2 (line 257) | public List<Feature2D> getOriginalFeatures2() {
    method isDirectionalAnchor (line 261) | public boolean isDirectionalAnchor(boolean direction) {
    method getName (line 269) | public String getName() {

FILE: src/juicebox/data/anchor/GenericLocusParser.java
  class GenericLocusParser (line 42) | public class GenericLocusParser {
    method loadFromBEDFile (line 48) | public static GenomeWideList<GenericLocus> loadFromBEDFile(ChromosomeH...
    method parseBEDFile (line 75) | private static List<GenericLocus> parseBEDFile(BufferedReader buffered...

FILE: src/juicebox/data/anchor/GenericLocusTools.java
  class GenericLocusTools (line 41) | public class GenericLocusTools {
    method extractAnchorsFromIntrachromosomalFeatures (line 47) | public static GenomeWideList<GenericLocus> extractAnchorsFromIntrachro...
    method extractAllAnchorsFromAllFeatures (line 70) | public static GenomeWideList<GenericLocus> extractAllAnchorsFromAllFea...
    method getMinSizeForExpansionFromGUI (line 90) | public static int getMinSizeForExpansionFromGUI() {
    method mergeAnchors (line 108) | private static void mergeAnchors(GenomeWideList<GenericLocus> anchorLi...
    method mergeAnchorsTakeSmaller (line 117) | private static void mergeAnchorsTakeSmaller(GenomeWideList<GenericLocu...
    method updateOriginalFeatures (line 129) | public static void updateOriginalFeatures(GenomeWideList<GenericLocus>...
    method intersectLists (line 143) | public static void intersectLists(final GenomeWideList<GenericLocus> f...
    method preservativeIntersectLists (line 157) | public static void preservativeIntersectLists(final GenomeWideList<Gen...
    method expandSmallAnchors (line 174) | private static void expandSmallAnchors(GenomeWideList<GenericLocus> an...
    method expandSmallAnchors (line 191) | private static void expandSmallAnchors(List<GenericLocus> anchors, int...
    method extractDirectionalAnchors (line 201) | public static GenomeWideList<GenericLocus> extractDirectionalAnchors(G...
    method mergeAndExpandSmallAnchors (line 218) | public static void mergeAndExpandSmallAnchors(GenomeWideList<GenericLo...
    method callMergeAnchors (line 224) | public static void callMergeAnchors(GenomeWideList<GenericLocus> locus...

FILE: src/juicebox/data/anchor/MotifAnchor.java
  class MotifAnchor (line 39) | public class MotifAnchor extends GenericLocus {
    method MotifAnchor (line 60) | public MotifAnchor(String chr, long x1, long x2) {
    method MotifAnchor (line 64) | public MotifAnchor(String chr, int x1, int x2, String name) {
    method MotifAnchor (line 77) | public MotifAnchor(String chrIndex, long x1, long x2, List<Feature2D> ...
    method getKey (line 81) | @Override
    method deepClone (line 86) | @Override
    method cloneToMotifAnchor (line 97) | @Override
    method toString (line 102) | @Override
    method equals (line 107) | @Override
    method hashCode (line 119) | @Override
    method compareTo (line 124) | @Override
    method setFIMOAttributes (line 140) | public void setFIMOAttributes(double score, double pValue, double qVal...
    method getScore (line 150) | public double getScore() {
    method hasFIMOAttributes (line 154) | public boolean hasFIMOAttributes() {
    method addFIMOAttributesFrom (line 158) | public void addFIMOAttributesFrom(MotifAnchor anchor) {
    method addFeatureReferencesFrom (line 162) | public void addFeatureReferencesFrom(MotifAnchor anchor) {
    method updateOriginalFeatures (line 167) | public void updateOriginalFeatures(boolean uniqueStatus, int specificS...
    method getSequence (line 213) | public String getSequence() {
    method getStrand (line 220) | public boolean getStrand() {

FILE: src/juicebox/data/anchor/MotifAnchorParser.java
  class MotifAnchorParser (line 52) | public class MotifAnchorParser {
    method loadMotifsFromGenomeID (line 54) | public static GenomeWideList<MotifAnchor> loadMotifsFromGenomeID(Strin...
    method loadMotifsFromLocalFile (line 58) | public static GenomeWideList<MotifAnchor> loadMotifsFromLocalFile(Stri...
    method loadMotifsFromURL (line 62) | public static GenomeWideList<MotifAnchor> loadMotifsFromURL(String pat...
    method loadGlobalMotifs (line 66) | private static GenomeWideList<MotifAnchor> loadGlobalMotifs(String pat...
    method extractProperMotifFilePath (line 112) | private static String extractProperMotifFilePath(String genomeID, Stri...
    method parseMotifFile (line 128) | private static GenomeWideList<MotifAnchor> parseMotifFile(String path,...
    method parseGlobalMotifFile (line 155) | private static List<MotifAnchor> parseGlobalMotifFile(BufferedReader b...
    method loadFromBEDFile (line 239) | public static GenomeWideList<MotifAnchor> loadFromBEDFile(ChromosomeHa...
    method parseBEDFile (line 266) | private static List<MotifAnchor> parseBEDFile(BufferedReader bufferedR...
    method downloadFromUrl (line 312) | public static String downloadFromUrl(URL url, String localFilename) th...
    method uncompressFromGzip (line 346) | public static String uncompressFromGzip(String compressedFile, String ...
    type MotifLocation (line 393) | public enum MotifLocation {VIA_ID, URL, LOCAL}

FILE: src/juicebox/data/anchor/MotifAnchorTools.java
  class MotifAnchorTools (line 39) | public class MotifAnchorTools extends GenericLocusTools {
    method updateOriginalFeatures (line 44) | public static void updateOriginalFeatures(GenomeWideList<MotifAnchor> ...
    method expandSmallAnchors (line 59) | private static void expandSmallAnchors(GenomeWideList<MotifAnchor> anc...
    method expandSmallAnchors (line 76) | private static void expandSmallAnchors(List<MotifAnchor> anchors, int ...
    method extractUniqueMotifs (line 90) | public static GenomeWideList<MotifAnchor> extractUniqueMotifs(GenomeWi...
    method extractBestMotifs (line 130) | public static GenomeWideList<MotifAnchor> extractBestMotifs(GenomeWide...
    method searchForFeature (line 156) | public static MotifAnchor searchForFeature(final String chrID, final S...
    method searchForFeature (line 171) | public static MotifAnchor searchForFeature(final String chrID, final i...
    method searchForFeatureWithin (line 186) | public static MotifAnchor searchForFeatureWithin(final String chrID, f...
    method searchForFeaturesWithin (line 201) | public static List<MotifAnchor> searchForFeaturesWithin(final String c...
    method retainProteinsInLocus (line 217) | public static void retainProteinsInLocus(final GenomeWideList<GenericL...
    method retainProteinsInLocus (line 231) | private static List<GenericLocus> retainProteinsInLocus(List<GenericLo...
    method retainBestMotifsInLocus (line 314) | public static void retainBestMotifsInLocus(final GenomeWideList<MotifA...
    method retainBestMotifsInLocus (line 327) | private static List<MotifAnchor> retainBestMotifsInLocus(List<MotifAnc...
    method calculateConvergenceHistogram (line 411) | public static int[] calculateConvergenceHistogram(Feature2DList featur...

FILE: src/juicebox/data/basics/Chromosome.java
  class Chromosome (line 28) | public class Chromosome {
    method Chromosome (line 33) | public Chromosome(int index, String name, long length) {
    method getIndex (line 39) | public int getIndex() {
    method setIndex (line 43) | public void setIndex(int ii) {
    method getLength (line 47) | public long getLength() {
    method getName (line 51) | public String getName() {
    method toString (line 55) | public String toString() {
    method equals (line 59) | public boolean equals(Object obj) {
    method hashCode (line 63) | public int hashCode() {
    method toIGVChromosome (line 67) | public org.broad.igv.feature.Chromosome toIGVChromosome() {

FILE: src/juicebox/data/basics/ListOfDoubleArrays.java
  class ListOfDoubleArrays (line 34) | public class ListOfDoubleArrays {
    method ListOfDoubleArrays (line 40) | public ListOfDoubleArrays(long length) {
    method ListOfDoubleArrays (line 54) | public ListOfDoubleArrays(long totSize, double defaultValue) {
    method clear (line 61) | public void clear() {
    method get (line 65) | public double get(long index) {
    method set (line 78) | public void set(long index, double value) {
    method getLength (line 88) | public long getLength() {
    method deepClone (line 92) | public ListOfDoubleArrays deepClone() {
    method divideBy (line 100) | public void divideBy(long index, double value) {
    method multiplyBy (line 110) | public void multiplyBy(long index, double value) {
    method addTo (line 120) | public void addTo(long index, double value) {
    method addValuesFrom (line 137) | public void addValuesFrom(ListOfDoubleArrays other) {
    method getFirstValue (line 149) | public double getFirstValue() {
    method getLastValue (line 153) | public double getLastValue() {
    method getValues (line 158) | public List<double[]> getValues() {
    method multiplyEverythingBy (line 162) | public void multiplyEverythingBy(double val) {
    method convertToFloats (line 170) | public ListOfFloatArrays convertToFloats() {

FILE: src/juicebox/data/basics/ListOfFloatArrays.java
  class ListOfFloatArrays (line 34) | public class ListOfFloatArrays {
    method ListOfFloatArrays (line 40) | public ListOfFloatArrays(long length) {
    method ListOfFloatArrays (line 54) | public ListOfFloatArrays(long totSize, float defaultValue) {
    method clear (line 61) | public void clear() {
    method get (line 65) | public float get(long index) {
    method set (line 78) | public void set(long index, float value) {
    method getLength (line 88) | public long getLength() {
    method getMaxRow (line 92) | public long getMaxRow() {
    method deepClone (line 106) | public ListOfFloatArrays deepClone() {
    method divideBy (line 114) | public void divideBy(long index, float value) {
    method multiplyBy (line 124) | public void multiplyBy(long index, float value) {
    method addTo (line 134) | public void addTo(long index, float value) {
    method addValuesFrom (line 151) | public void addValuesFrom(ListOfFloatArrays other) {
    method getFirstValue (line 165) | public float getFirstValue() {
    method getLastValue (line 169) | public float getLastValue() {
    method getValues (line 174) | public List<float[]> getValues() {
    method multiplyEverythingBy (line 178) | public void multiplyEverythingBy(double val) {
    method convertToDoubles (line 186) | public ListOfDoubleArrays convertToDoubles() {

FILE: src/juicebox/data/basics/ListOfIntArrays.java
  class ListOfIntArrays (line 34) | public class ListOfIntArrays {
    method ListOfIntArrays (line 40) | public ListOfIntArrays(long length) {
    method ListOfIntArrays (line 54) | public ListOfIntArrays(long totSize, int defaultValue) {
    method clear (line 61) | public void clear() {
    method get (line 65) | public int get(long index) {
    method set (line 76) | public void set(long index, int value) {
    method getLength (line 89) | public long getLength() {
    method deepClone (line 93) | public ListOfIntArrays deepClone() {
    method divideBy (line 101) | public void divideBy(long index, int value) {
    method addValuesFrom (line 113) | public void addValuesFrom(ListOfIntArrays other) {
    method addTo (line 125) | public void addTo(long index, int value) {
    method getValues (line 135) | public List<int[]> getValues() {

FILE: src/juicebox/data/censoring/CustomMZDRegionHandler.java
  class CustomMZDRegionHandler (line 36) | public class CustomMZDRegionHandler {
    method getAllRegionsFromSubChromosomes (line 42) | private static Pair<List<GenericLocus>, List<GenericLocus>> getAllRegi...
    method initialize (line 80) | public void initialize(Chromosome chr1, Chromosome chr2, HiCZoom zoom,...
    method getBoundariesOfCustomChromosomeX (line 93) | public List<Long> getBoundariesOfCustomChromosomeX() {
    method getBoundariesOfCustomChromosomeY (line 97) | public List<Long> getBoundariesOfCustomChromosomeY() {
    method populateRegions (line 101) | private void populateRegions(Chromosome chr, ChromosomeHandler handler...
    method getIntersectingFeatures (line 114) | public List<Pair<GenericLocus, GenericLocus>> getIntersectingFeatures(...
    method getIntersectingFeatures (line 131) | public List<Pair<GenericLocus, GenericLocus>> getIntersectingFeatures(...

FILE: src/juicebox/data/censoring/OneDimSearchUtils.java
  class OneDimSearchUtils (line 29) | class OneDimSearchUtils {
    method indexedBinaryNearestSearch (line 45) | public static <T> int indexedBinaryNearestSearch(List<? extends Compar...

FILE: src/juicebox/data/censoring/OneDimTrackCensoring.java
  class OneDimTrackCensoring (line 39) | public class OneDimTrackCensoring {
    method getFilteredData (line 42) | public static HiCDataPoint[] getFilteredData(HiCDataSource dataSource,...
    method translateDataPointArray (line 76) | private static HiCDataPoint[] translateDataPointArray(int binSize, HiC...
    method mergeDataPoints (line 115) | private static HiCDataPoint[] mergeDataPoints(List<HiCDataPoint[]> dat...

FILE: src/juicebox/data/censoring/RegionPair.java
  class RegionPair (line 34) | public class RegionPair {
    method RegionPair (line 43) | private RegionPair(int xI, Pair<GenericLocus, GenericLocus> xLocalRegion,
    method generateRegionPair (line 53) | public static RegionPair generateRegionPair(Pair<GenericLocus, Generic...
    method getDescription (line 67) | public String getDescription() {
    method getOriginalGenomeRegion (line 71) | public long[] getOriginalGenomeRegion() {
    method equals (line 77) | @Override
    method hashCode (line 93) | @Override

FILE: src/juicebox/data/feature/Feature.java
  class Feature (line 30) | public abstract class Feature {
    method getKey (line 31) | public abstract String getKey();
    method deepClone (line 33) | public abstract Feature deepClone();

FILE: src/juicebox/data/feature/FeatureFilter.java
  type FeatureFilter (line 32) | public interface FeatureFilter<T> {
    method filter (line 33) | List<T> filter(String chr, List<T> featureList);

FILE: src/juicebox/data/feature/FeatureFunction.java
  type FeatureFunction (line 32) | public interface FeatureFunction<T> {
    method process (line 33) | void process(String chr, List<T> featureList);

FILE: src/juicebox/data/feature/GenomeWideList.java
  class GenomeWideList (line 38) | public class GenomeWideList<T extends Feature> {
    method GenomeWideList (line 52) | public GenomeWideList() {
    method GenomeWideList (line 58) | public GenomeWideList(ChromosomeHandler handler) {
    method GenomeWideList (line 68) | public GenomeWideList(ChromosomeHandler handler, List<T> features) {
    method GenomeWideList (line 82) | public GenomeWideList(final GenomeWideList<T> gwList) {
    method containsKey (line 97) | public boolean containsKey(String key) {
    method setFeatures (line 105) | public synchronized void setFeatures(String key, List<T> features) {
    method getFeatures (line 113) | public List<T> getFeatures(String key) {
    method size (line 120) | public synchronized int size() {
    method addAll (line 131) | @SuppressWarnings("unchecked")
    method filterLists (line 143) | public synchronized void filterLists(FeatureFilter<T> filter) {
    method processLists (line 156) | public synchronized void processLists(FeatureFunction<T> function) {
    method deepClone (line 165) | public GenomeWideList<T> deepClone() {
    method cloneFeatureList (line 177) | @SuppressWarnings("unchecked")
    method keySet (line 189) | public Set<String> keySet() {
    method addFeature (line 199) | public synchronized void addFeature(String key, T feature) {
    method simpleExport (line 209) | public void simpleExport(final File file) {

FILE: src/juicebox/data/iterator/BigContactRecordList.java
  class BigContactRecordList (line 31) | public class BigContactRecordList {
    method populateListOfListsFromSingleIterator (line 37) | public static BigContactRecordList populateListOfListsFromSingleIterat...
    method addAllSubLists (line 56) | public void addAllSubLists(BigContactRecordList other) {
    method addSubList (line 63) | private void addSubList(List<ContactRecord> cList) {
    method getTotalSize (line 68) | public long getTotalSize() {
    method getNumLists (line 72) | public int getNumLists() {
    method getSubList (line 76) | public List<ContactRecord> getSubList(int index) {
    method clear (line 80) | public void clear() {
    method sort (line 89) | public void sort() {
    method collapse (line 93) | public void collapse() {
    method getIndexOfMin (line 116) | private int getIndexOfMin(int[] counts) {

FILE: src/juicebox/data/iterator/ContactRecordIterator.java
  class ContactRecordIterator (line 39) | public /**
    method ContactRecordIterator (line 54) | ContactRecordIterator(DatasetReader reader, MatrixZoomData zd, LRUCach...
    method hasNext (line 68) | @Override
    method next (line 104) | @Override
    method remove (line 112) | @Override

FILE: src/juicebox/data/iterator/CoupledIteratorAndOffset.java
  class CoupledIteratorAndOffset (line 31) | public class CoupledIteratorAndOffset implements Iterator<ContactRecord> {
    method CoupledIteratorAndOffset (line 36) | public CoupledIteratorAndOffset(Iterator<ContactRecord> iterator, int ...
    method hasNext (line 42) | @Override
    method next (line 47) | @Override

FILE: src/juicebox/data/iterator/GWIteratorContainer.java
  class GWIteratorContainer (line 40) | public class GWIteratorContainer extends IteratorContainer {
    method GWIteratorContainer (line 47) | public GWIteratorContainer(Dataset dataset, ChromosomeHandler handler,
    method calculateMatrixSize (line 57) | private static long calculateMatrixSize(ChromosomeHandler handler, HiC...
    method getNewContactRecordIterator (line 65) | @Override
    method getAllFromFileContactRecordIterators (line 70) | public List<Iterator<ContactRecord>> getAllFromFileContactRecordIterat...
    method sparseMultiply (line 74) | @Override
    method clear (line 99) | @Override

FILE: src/juicebox/data/iterator/GenomeWideIterator.java
  class GenomeWideIterator (line 35) | public class GenomeWideIterator implements Iterator<ContactRecord> {
    method GenomeWideIterator (line 47) | public GenomeWideIterator(Dataset dataset, ChromosomeHandler handler,
    method hasNext (line 56) | @Override
    method getAllFromFileIterators (line 67) | public static List<Iterator<ContactRecord>> getAllFromFileIterators(Da...
    method getNextIterator (line 96) | private boolean getNextIterator() {
    method next (line 123) | @Override

FILE: src/juicebox/data/iterator/IteratorContainer.java
  class IteratorContainer (line 33) | public abstract class IteratorContainer {
    method IteratorContainer (line 39) | public IteratorContainer(long matrixSize) {
    method getNewContactRecordIterator (line 43) | abstract public Iterator<ContactRecord> getNewContactRecordIterator();
    method setNumberOfContactRecords (line 45) | protected void setNumberOfContactRecords(long numberOfContactRecords) {
    method getNumberOfContactRecords (line 49) | public long getNumberOfContactRecords() {
    method getMatrixSize (line 62) | public long getMatrixSize() {
    method getIsThereEnoughMemoryForNormCalculation (line 66) | public boolean getIsThereEnoughMemoryForNormCalculation() {
    method sparseMultiply (line 73) | public abstract ListOfFloatArrays sparseMultiply(ListOfFloatArrays vec...
    method clear (line 75) | public abstract void clear();
    method getArrayOfFloatVectors (line 77) | protected static ListOfFloatArrays[] getArrayOfFloatVectors(int size, ...
    method getArrayOfDoubleVectors (line 85) | protected static ListOfDoubleArrays[] getArrayOfDoubleVectors(int size...

FILE: src/juicebox/data/iterator/ListIteratorContainer.java
  class ListIteratorContainer (line 36) | public class ListIteratorContainer extends IteratorContainer {
    method ListIteratorContainer (line 40) | public ListIteratorContainer(List<ContactRecord> readList, long matrix...
    method getNewContactRecordIterator (line 46) | @Override
    method getIsThereEnoughMemoryForNormCalculation (line 51) | @Override
    method sparseMultiplyByListContacts (line 58) | public static ListOfFloatArrays sparseMultiplyByListContacts(List<Cont...
    method matrixVectorMult (line 81) | public static void matrixVectorMult(ListOfFloatArrays vector, ListOfDo...
    method sparseMultiply (line 93) | @Override
    method clear (line 98) | @Override

FILE: src/juicebox/data/iterator/ListOfListGenerator.java
  class ListOfListGenerator (line 37) | public class ListOfListGenerator {
    method createFromZD (line 39) | public static IteratorContainer createFromZD(DatasetReader reader, Mat...
    method createForWholeGenome (line 45) | public static IteratorContainer createForWholeGenome(Dataset dataset, ...
    method tryToCreateIteratorInRAM (line 51) | private static IteratorContainer tryToCreateIteratorInRAM(IteratorCont...
    method populateListOfLists (line 80) | private static BigContactRecordList populateListOfLists(IteratorContai...
    method checkMemory (line 105) | private static boolean checkMemory(IteratorContainer ic) {

FILE: src/juicebox/data/iterator/ListOfListIterator.java
  class ListOfListIterator (line 31) | public class ListOfListIterator implements Iterator<ContactRecord> {
    method ListOfListIterator (line 37) | public ListOfListIterator(BigContactRecordList allContactRecords) {
    method hasNext (line 42) | @Override
    method getNextIterator (line 52) | private boolean getNextIterator() {
    method next (line 63) | @Override

FILE: src/juicebox/data/iterator/ListOfListIteratorContainer.java
  class ListOfListIteratorContainer (line 36) | public class ListOfListIteratorContainer extends IteratorContainer {
    method ListOfListIteratorContainer (line 40) | public ListOfListIteratorContainer(BigContactRecordList allContactReco...
    method getNewContactRecordIterator (line 47) | @Override
    method getIsThereEnoughMemoryForNormCalculation (line 52) | @Override
    method sparseMultiply (line 59) | @Override
    method clear (line 75) | @Override
    method sparseMultiplyAcrossLists (line 80) | private ListOfFloatArrays sparseMultiplyAcrossLists(ListOfFloatArrays ...

FILE: src/juicebox/data/iterator/ParallelizedListOperations.java
  class ParallelizedListOperations (line 27) | public class ParallelizedListOperations {
    method createCutoffs (line 29) | public static int[] createCutoffs(int n, int listSize) {

FILE: src/juicebox/data/iterator/ZDIteratorContainer.java
  class ZDIteratorContainer (line 37) | public class ZDIteratorContainer extends IteratorContainer {
    method ZDIteratorContainer (line 43) | public ZDIteratorContainer(DatasetReader reader, MatrixZoomData zd, LR...
    method getNewContactRecordIterator (line 50) | @Override
    method matrixVectorMultiplyOnIterator (line 55) | public static ListOfFloatArrays matrixVectorMultiplyOnIterator(Iterato...
    method sparseMultiply (line 65) | @Override
    method clear (line 70) | @Override

FILE: src/juicebox/data/v9depth/ConstantDepth.java
  class ConstantDepth (line 27) | public class ConstantDepth extends V9Depth {
    method ConstantDepth (line 29) | public ConstantDepth(int base, int blockBinCount) {
    method logBase (line 34) | @Override

FILE: src/juicebox/data/v9depth/LogDepth.java
  class LogDepth (line 27) | public class LogDepth extends V9Depth {
    method LogDepth (line 29) | public LogDepth(int base, int blockBinCount) {
    method logBase (line 34) | @Override

FILE: src/juicebox/data/v9depth/V9Depth.java
  class V9Depth (line 27) | public abstract class V9Depth {
    method V9Depth (line 31) | V9Depth(int blockBinCount) {
    method setDepthMethod (line 35) | public static V9Depth setDepthMethod(int depthBase, int blockBinCount) {
    method getDepth (line 46) | public int getDepth(int val1, int val2) {
    method logBase (line 50) | protected abstract int logBase(double value);

FILE: src/juicebox/encode/EncodeFileBrowser.java
  class EncodeFileBrowser (line 57) | public class EncodeFileBrowser extends JDialog {
    method EncodeFileBrowser (line 68) | private EncodeFileBrowser(Frame owner, EncodeTableModel model) {
    method getInstance (line 76) | public synchronized static EncodeFileBrowser getInstance(String genome...
    method getEncodeGenomeId (line 94) | private static String getEncodeGenomeId(String genomeId) {
    method getEncodeFileRecords (line 100) | private static Pair<String[], List<EncodeFileRecord>> getEncodeFileRec...
    method init (line 155) | private void init(final EncodeTableModel model) {
    method updateFilter (line 192) | private void updateFilter() {
    method loadButtonActionPerformed (line 211) | private void loadButtonActionPerformed(ActionEvent e) {
    method cancelButtonActionPerformed (line 216) | private void cancelButtonActionPerformed(ActionEvent e) {
    method isCanceled (line 221) | public boolean isCanceled() {
    method getSelectedRecords (line 229) | public List<EncodeFileRecord> getSelectedRecords() {
    method checkEncodeTracks (line 246) | public void checkEncodeTracks(String track) {
    method remove (line 259) | public void remove(ResourceLocator locator) {
    method initComponents (line 277) | private void initComponents() {
    class RegexFilter (line 377) | private class RegexFilter extends RowFilter<EncodeTableModel, Object> {
      method RegexFilter (line 381) | RegexFilter(String text) {
      method include (line 414) | @Override

FILE: src/juicebox/encode/EncodeFileRecord.java
  class EncodeFileRecord (line 37) | public class EncodeFileRecord {
    method EncodeFileRecord (line 44) | public EncodeFileRecord(String path, Map<String, String> attributes) {
    method getPath (line 49) | public String getPath() {
    method getFileType (line 53) | public String getFileType() {
    method getAttributeValue (line 63) | public String getAttributeValue(String name) {
    method getAttributeNames (line 69) | public Collection<String> getAttributeNames() {
    method containsText (line 73) | public boolean containsText(String filter) {
    method isSelected (line 80) | boolean isSelected() {
    method setSelected (line 84) | public void setSelected(boolean selected) {
    method getTrackName (line 93) | public String getTrackName() {
    method hasMetaData (line 116) | public boolean hasMetaData() {

FILE: src/juicebox/encode/EncodeTableModel.java
  class EncodeTableModel (line 60) | class EncodeTableModel extends AbstractTableModel {
    method EncodeTableModel (line 67) | public EncodeTableModel(String[] headings, List<EncodeFileRecord> reco...
    method getSorter (line 94) | public TableRowSorter<EncodeTableModel> getSorter() {
    method getColumnClass (line 98) | @Override
    method getColumnName (line 103) | @Override
    method getRowCount (line 108) | @Override
    method getColumnCount (line 113) | @Override
    method getValueAt (line 118) | @Override
    method isCellEditable (line 135) | @Override
    method setValueAt (line 140) | @Override
    method getRecords (line 148) | public List<EncodeFileRecord> getRecords() {

FILE: src/juicebox/encode/UCSCEncodeUtils.java
  class UCSCEncodeUtils (line 41) | class UCSCEncodeUtils {
    method main (line 55) | public static void main(String[] args) throws IOException {
    method parseTableFile (line 84) | private static List<EncodeFileRecord> parseTableFile(String url) throw...
    method updateEncodeTableFile (line 114) | private static void updateEncodeTableFile(String inputFile, String out...
    method outputRecords (line 151) | private static void outputRecords(String outputFile, List<EncodeFileRe...
    method parseFilesDotTxt (line 178) | private static void parseFilesDotTxt(String url, List<EncodeFileRecord...

FILE: src/juicebox/gui/BoundsPopupMenuListener.java
  class BoundsPopupMenuListener (line 43) | class BoundsPopupMenuListener<E> implements PopupMenuListener {
    method BoundsPopupMenuListener (line 54) | public BoundsPopupMenuListener() {
    method BoundsPopupMenuListener (line 66) | public BoundsPopupMenuListener(boolean popupWider, boolean popupAbove) {
    method BoundsPopupMenuListener (line 77) | public BoundsPopupMenuListener(int maximumWidth) {
    method BoundsPopupMenuListener (line 91) | private BoundsPopupMenuListener(
    method getMaximumWidth (line 104) | public int getMaximumWidth() {
    method setMaximumWidth (line 115) | private void setMaximumWidth(int maximumWidth) {
    method isPopupAbove (line 124) | public boolean isPopupAbove() {
    method setPopupAbove (line 134) | private void setPopupAbove(boolean popupAbove) {
    method isPopupWider (line 143) | public boolean isPopupWider() {
    method setPopupWider (line 154) | private void setPopupWider(boolean popupWider) {
    method isScrollBarRequired (line 163) | public boolean isScrollBarRequired() {
    method setScrollBarRequired (line 176) | private void setScrollBarRequired(boolean scrollBarRequired) {
    method popupMenuWillBecomeVisible (line 183) | @Override
    method customizePopup (line 201) | private void customizePopup(BasicComboPopup popup) {
    method popupWider (line 231) | private void popupWider(BasicComboPopup popup) {
    method checkHorizontalScrollBar (line 263) | private void checkHorizontalScrollBar(BasicComboPopup popup) {
    method getScrollPane (line 302) | private JScrollPane getScrollPane(BasicComboPopup popup) {
    method getScrollBarWidth (line 314) | private int getScrollBarWidth(BasicComboPopup popup, JScrollPane scrol...
    method horizontalScrollBarWillBeVisible (line 331) | private boolean horizontalScrollBarWillBeVisible(BasicComboPopup popup...
    method popupMenuCanceled (line 340) | @Override
    method popupMenuWillBecomeInvisible (line 344) | @Override

FILE: src/juicebox/gui/MainMenuBar.java
  class MainMenuBar (line 49) | public class MainMenuBar extends JMenuBar {
    method MainMenuBar (line 85) | public MainMenuBar(SuperAdapter superAdapter) {
    method exitAssemblyMode (line 89) | public static void exitAssemblyMode() {
    method unsavedEditsExist (line 98) | public boolean unsavedEditsExist() {
    method addRecentMapMenuEntry (line 103) | public void addRecentMapMenuEntry(String title, boolean status) {
    method addRecentStateMenuEntry (line 108) | private void addRecentStateMenuEntry(String title, boolean status) {
    method createMenuBar (line 112) | private void createMenuBar(final SuperAdapter superAdapter) {
    method getRecentLocationMenu (line 865) | public RecentMenu getRecentLocationMenu() {
    method setEnableForAllElements (line 869) | public void setEnableForAllElements(boolean status) {
    method setEnableAssemblyMenuOptions (line 880) | public void setEnableAssemblyMenuOptions(boolean status) {
    method enableAssemblyEditsOnImport (line 890) | public void enableAssemblyEditsOnImport(SuperAdapter superAdapter) {
    method updatePrevStateNameFromImport (line 895) | public void updatePrevStateNameFromImport(String path) {
    method updateMainMapHasBeenLoaded (line 899) | public void updateMainMapHasBeenLoaded(boolean status) {
    method updateControlMapHasBeenLoaded (line 906) | public void updateControlMapHasBeenLoaded(boolean status) {
    method setAnnotationPanelMenuItemSelected (line 910) | public void setAnnotationPanelMenuItemSelected(boolean status) {

FILE: src/juicebox/gui/MainViewPanel.java
  class MainViewPanel (line 55) | public class MainViewPanel {
    method setIgnoreUpdateThumbnail (line 109) | public void setIgnoreUpdateThumbnail(boolean flag) {
    method getChrBox2 (line 113) | public JComboBox<Chromosome> getChrBox2() {
    method getChrBox1 (line 117) | public JComboBox<Chromosome> getChrBox1() {
    method getMenuBar (line 121) | public MainMenuBar getMenuBar() {
    method initializeMainView (line 125) | public void initializeMainView(final SuperAdapter superAdapter, Contai...
    method initialSetToFalse (line 465) | private void initialSetToFalse() {
    method resetAllColors (line 473) | public void resetAllColors() {
    method getHiCPanel (line 499) | public JPanel getHiCPanel() {
    method updateToolTipText (line 503) | public void updateToolTipText(String s) {
    method isResolutionLocked (line 509) | public boolean isResolutionLocked() {
    method getHeatmapPanel (line 513) | public HeatmapPanel getHeatmapPanel() {
    method updateZoom (line 517) | public void updateZoom(HiCZoom newZoom) {
    method updateAndResetZoom (line 521) | public void updateAndResetZoom(HiCZoom newZoom) {
    method unsafeSetSelectedChromosomes (line 530) | public void unsafeSetSelectedChromosomes(SuperAdapter superAdapter, Ch...
    method unsafeRefreshChromosomes (line 536) | public void unsafeRefreshChromosomes(SuperAdapter superAdapter) {
    method setSelectedChromosomesNoRefresh (line 564) | public void setSelectedChromosomesNoRefresh(Chromosome xChrom, Chromos...
    method setChromosomes (line 579) | void setChromosomes(ChromosomeHandler handler) {
    method isInterChromosomal (line 585) | private boolean isInterChromosomal() {
    method isWholeGenome (line 595) | private boolean isWholeGenome() {
    method ifControlIsLoaded (line 601) | private boolean ifControlIsLoaded() {
    method isWholeGenome (line 605) | private boolean isWholeGenome(HiC hic) {
    method setNormalizationDisplayState (line 611) | public void setNormalizationDisplayState(HiC hic) {
    method repaintTrackPanels (line 631) | public void repaintTrackPanels() {
    method repaintGridRulerPanels (line 636) | public void repaintGridRulerPanels() {
    method getTrackPanelPrintouts (line 641) | public String getTrackPanelPrintouts(int x, int y) {
    method updateThumbnail (line 655) | public void updateThumbnail(HiC hic) {
    method invertAssemblyMatCheck (line 686) | public static void invertAssemblyMatCheck() {
    method chrBox1ActionPerformed (line 690) | private void chrBox1ActionPerformed(ActionEvent e) {
    method chrBox2ActionPerformed (line 698) | private void chrBox2ActionPerformed(ActionEvent e) {
    method setResolutionSliderVisible (line 706) | public boolean setResolutionSliderVisible(boolean state, SuperAdapter ...
    method updateTrackPanel (line 722) | public void updateTrackPanel(boolean hasTracks) {
    method setShowChromosomeFig (line 749) | public void setShowChromosomeFig(boolean showFigure) {
    method getShowGridLines (line 785) | public boolean getShowGridLines() {
    method setShowGridLines (line 789) | public void setShowGridLines(boolean status) {
    method getToolTip (line 795) | public String getToolTip() {
    method setDisplayBox (line 799) | public void setDisplayBox(int indx) {
    method setNormalizationEnabledForReload (line 803) | public void setNormalizationEnabledForReload() {
    method setPositionChrLeft (line 809) | public void setPositionChrLeft(String newPositionDate) {
    method setPositionChrTop (line 813) | public void setPositionChrTop(String newPositionDate) {
    method setEnableForAllElements (line 817) | public void setEnableForAllElements(SuperAdapter superAdapter, boolean...
    method getColorRangeValues (line 833) | public String getColorRangeValues() {
    method getColorRangeScaleFactor (line 837) | public double getColorRangeScaleFactor() {
    method updateRatioColorSlider (line 841) | public void updateRatioColorSlider(HiC hic, double maxColor, double up...
    method updateColorSlider (line 845) | public void updateColorSlider(HiC hic, double lowColor, double upColor...
    method setEnabledForNormalization (line 849) | public void setEnabledForNormalization(boolean isControl, String[] nor...
    method getDisplayOptionComboBox (line 870) | public JComboBox<MatrixType> getDisplayOptionComboBox() {
    method resetResolutionSlider (line 874) | public void resetResolutionSlider(HiC.Unit unit) {
    method setSelectedDisplayOption (line 879) | public void setSelectedDisplayOption(boolean isControl, boolean isCont...
    method getMouseHoverTextPanel (line 905) | public JEditorPane getMouseHoverTextPanel() {
    method getResolutionSlider (line 909) | public ResolutionControl getResolutionSlider() {
    method getColorRangePanel (line 913) | public JColorRangePanel getColorRangePanel() {
    method isTooltipAllowedToUpdate (line 917) | public boolean isTooltipAllowedToUpdate() {
    method toggleToolTipUpdates (line 921) | public void toggleToolTipUpdates(boolean tooltipAllowedToUpdated) {
    method getObservedNormalizationComboBox (line 925) | public JComboBox<String> getObservedNormalizationComboBox() {
    method getControlNormalizationComboBox (line 929) | public JComboBox<String> getControlNormalizationComboBox() {
    method getRulerPanelY (line 933) | public HiCRulerPanel getRulerPanelY() {
    method getRulerPanelX (line 937) | public HiCRulerPanel getRulerPanelX() {
    method getChromosomeFigPanelY (line 941) | public HiCChromosomeFigPanel getChromosomeFigPanelY() {
    method getChromosomeFigPanelX (line 945) | public HiCChromosomeFigPanel getChromosomeFigPanelX() {
    method setAnnotationsPanelToggleButtonSelected (line 949) | public void setAnnotationsPanelToggleButtonSelected(boolean status) {
    method updateMiniAnnotationsLayerPanel (line 954) | public void updateMiniAnnotationsLayerPanel(SuperAdapter superAdapter) {
    method unsavedEditsExist (line 960) | public boolean unsavedEditsExist() {
    method addRecentMapMenuEntry (line 964) | public void addRecentMapMenuEntry(String title, boolean status) {
    method updatePrevStateNameFromImport (line 968) | public void updatePrevStateNameFromImport(String path) {

FILE: src/juicebox/gui/PseudoCountEditor.java
  class PseudoCountEditor (line 35) | public class PseudoCountEditor extends JDialog {
    method PseudoCountEditor (line 39) | public PseudoCountEditor(final SuperAdapter superAdapter) {

FILE: src/juicebox/gui/SuperAdapter.java
  class SuperAdapter (line 68) | public class SuperAdapter {
    method getDatasetTitle (line 86) | public static String getDatasetTitle() {
    method setDatasetTitle (line 90) | public static void setDatasetTitle(String newDatasetTitle) {
    method showMessageDialog (line 94) | public static void showMessageDialog(String message) {
    method showConfirmDialog (line 98) | public static int showConfirmDialog(String message) {
    method setAdapters (line 105) | public void setAdapters(MainWindow mainWindow, HiC hic, MainViewPanel ...
    method unsavedEditsExist (line 111) | public boolean unsavedEditsExist() {
    method addRecentMapMenuEntry (line 115) | public void addRecentMapMenuEntry(String title, boolean status) {
    method showDataSetMetrics (line 121) | public void showDataSetMetrics(boolean isControl) {
    method exportDataLauncher (line 138) | public void exportDataLauncher() {
    method setEnableForAllElements (line 147) | public void setEnableForAllElements(boolean status) {
    method resetControlMap (line 154) | public void resetControlMap() {
    method toggleAdvancedViews (line 162) | public void toggleAdvancedViews() {
    method launchSlideShow (line 167) | public void launchSlideShow() {
    method launchImportState (line 171) | public void launchImportState(File fileForExport) {
    method launchLoadStateFromXML (line 175) | public void launchLoadStateFromXML(String mapPath) {
    method launchPearsonColorScaleEditor (line 179) | public void launchPearsonColorScaleEditor() {
    method launchSetPseudoCountEditor (line 183) | public void launchSetPseudoCountEditor() {
    method restoreLocation (line 187) | public void restoreLocation(String loc) {
    method getEncodeAction (line 191) | public LoadEncodeAction getEncodeAction() {
    method getTrackLoadAction (line 199) | public LoadAction getTrackLoadAction() {
    method updatePrevStateNameFromImport (line 203) | public void updatePrevStateNameFromImport(String path) {
    method loadFromListActionPerformed (line 207) | public void loadFromListActionPerformed(boolean control) {
    method launchExportPDF (line 214) | public void launchExportPDF() {
    method launchExportSVG (line 218) | public void launchExportSVG() {
    method loadFromRecentActionPerformed (line 222) | public void loadFromRecentActionPerformed(String url, String title, bo...
    method clearCustomAnnotationDialog (line 229) | public int clearCustomAnnotationDialog() {
    method deleteCustomAnnotationDialog (line 237) | public int deleteCustomAnnotationDialog(String layerName) {
    method repaint (line 245) | public void repaint() {
    method safeLoadFromURLActionPerformed (line 251) | public void safeLoadFromURLActionPerformed(final Runnable refresh1DLay...
    method getLocationDescription (line 274) | public String getLocationDescription() {
    method getDescription (line 278) | public String getDescription(String item) {
    method addNewStateToXML (line 283) | public void addNewStateToXML(String stateDescription) {
    method setNormalizationDisplayState (line 287) | public void setNormalizationDisplayState() {
    method centerMap (line 291) | public void centerMap(int xBP, int yBP) {
    method moveMapBy (line 295) | public void moveMapBy(int dxBP, int dyBP) {
    method shouldVisibleWindowBeRendered (line 299) | public boolean shouldVisibleWindowBeRendered() {
    method getHiCScaleFactor (line 303) | public double getHiCScaleFactor() {
    method getHiCOrigin (line 307) | public Point2D.Double getHiCOrigin() {
    method getHiCScale (line 311) | public Point2D.Double getHiCScale(int width, int height) {
    method getHeatMapPanelDimensions (line 321) | public Point getHeatMapPanelDimensions() {
    method initializeMainView (line 325) | public void initializeMainView(Container contentPane, Dimension screen...
    method unsafeSetInitialZoom (line 329) | private void unsafeSetInitialZoom() {
    method refresh (line 373) | public void refresh() {
    method unsafeClearAllMatrixZoomCache (line 379) | public void unsafeClearAllMatrixZoomCache() {
    method refreshMainOnly (line 384) | private void refreshMainOnly() {
    method genomesAreCompatible (line 389) | private static boolean genomesAreCompatible(Dataset dataset1, Dataset ...
    method unsafeLoad (line 405) | private boolean unsafeLoad(final List<String> files, final boolean con...
    method safeLoad (line 505) | public void safeLoad(final List<String> files, final boolean control, ...
    method unsafeLoadWithTitleFix (line 516) | public void unsafeLoadWithTitleFix(List<String> files, boolean control...
    method getNewHiCKeyDispatcher (line 544) | public KeyEventDispatcher getNewHiCKeyDispatcher() {
    method launchLoadFileDialog (line 548) | public LoadDialog launchLoadFileDialog(Properties properties) {
    method safeRefreshButtonActionPerformed (line 552) | void safeRefreshButtonActionPerformed() {
    method safeDisplayOptionComboBoxActionPerformed (line 562) | public boolean safeDisplayOptionComboBoxActionPerformed() {
    method safeNormalizationComboBoxActionPerformed (line 573) | void safeNormalizationComboBoxActionPerformed(final ActionEvent e, fin...
    method unsafeDisplayOptionComboBoxActionPerformed (line 582) | public boolean unsafeDisplayOptionComboBoxActionPerformed() {
    method getHiC (line 637) | public HiC getHiC() {
    method getMainWindow (line 646) | public MainWindow getMainWindow() {
    method getLayersPanel (line 650) | public LayersPanel getLayersPanel() {
    method getMainMenuBar (line 654) | public MainMenuBar getMainMenuBar() {
    method revalidate (line 658) | public void revalidate() {
    method updateMainViewPanelToolTipText (line 663) | public void updateMainViewPanelToolTipText(String text) {
    method setPositionChrTop (line 667) | public void setPositionChrTop(String positionChrTop) {
    method setPositionChrLeft (line 671) | public void setPositionChrLeft(String positionChrLeft) {
    method getToolTip (line 675) | public String getToolTip() {
    method repaintTrackPanels (line 679) | public void repaintTrackPanels() {
    method repaintGridRulerPanels (line 683) | public void repaintGridRulerPanels() {
    method isResolutionLocked (line 688) | public boolean isResolutionLocked() {
    method updateThumbnail (line 692) | public void updateThumbnail() {
    method updateZoom (line 696) | public void updateZoom(HiCZoom newZoom) {
    method updateAndResetZoom (line 700) | public void updateAndResetZoom(HiCZoom newZoom) {
    method launchFileLoadingError (line 704) | public void launchFileLoadingError(String urlString) {
    method updateTitle (line 709) | private void updateTitle(boolean control, String title) {
    method updateTitle (line 717) | private void updateTitle() {
    method launchGenericMessageDialog (line 735) | public void launchGenericMessageDialog(String message, String error, i...
    method getHeatmapPanel (line 739) | public HeatmapPanel getHeatmapPanel() {
    method updateTrackPanel (line 743) | public void updateTrackPanel() {
    method unsafeNormalizationComboBoxActionPerformed (line 747) | private void unsafeNormalizationComboBoxActionPerformed(boolean isForC...
    method getMainViewPanel (line 758) | public MainViewPanel getMainViewPanel() {
    method isTooltipAllowedToUpdated (line 762) | public boolean isTooltipAllowedToUpdated() {
    method toggleToolTipUpdates (line 766) | public void toggleToolTipUpdates(boolean b) {
    method executeLongRunningTask (line 770) | public void executeLongRunningTask(Runnable runnable, String s) {
    method updateRatioColorSlider (line 774) | public void updateRatioColorSlider(int max, double val) {
    method updateColorSlider (line 778) | public void updateColorSlider(double low, double high) {
    method unsafeSetSelectedChromosomes (line 782) | public void unsafeSetSelectedChromosomes(Chromosome xC, Chromosome yC) {
    method setSelectedChromosomesNoRefresh (line 786) | public void setSelectedChromosomesNoRefresh(Chromosome chrX, Chromosom...
    method unsafeUpdateHiCChromosomes (line 791) | public void unsafeUpdateHiCChromosomes(Chromosome chrX, Chromosome chr...
    method setShowChromosomeFig (line 802) | public void setShowChromosomeFig(boolean status) {
    method getShowGridLines (line 806) | public boolean getShowGridLines() {
    method setShowGridLines (line 810) | public void setShowGridLines(boolean status) {
    method getActiveLayerHandler (line 814) | public AnnotationLayerHandler getActiveLayerHandler() {
    method setActiveLayerHandler (line 818) | public void setActiveLayerHandler(AnnotationLayerHandler activeLayer) {
    method getAllLayers (line 826) | public List<AnnotationLayerHandler> getAllLayers() {
    method getAssemblyLayerHandlers (line 831) | public List<AnnotationLayerHandler> getAssemblyLayerHandlers() {
    method getAssemblyLayerHandler (line 844) | private AnnotationLayerHandler getAssemblyLayerHandler(AnnotationLayer...
    method getMainLayer (line 853) | public AnnotationLayerHandler getMainLayer() {
    method getGroupLayer (line 857) | public AnnotationLayerHandler getGroupLayer() {
    method getEditLayer (line 861) | public AnnotationLayerHandler getEditLayer() {
    method exitActionPerformed (line 865) | public void exitActionPerformed() {
    method createNewLayer (line 876) | public AnnotationLayerHandler createNewLayer(File temp) {
    method updateLayerDeleteStatus (line 890) | public void updateLayerDeleteStatus() {
    method removeLayer (line 897) | public int removeLayer(AnnotationLayerHandler handler) {
    method resetAnnotationLayers (line 912) | private void resetAnnotationLayers() {
    method moveDownIndex (line 921) | public int moveDownIndex(AnnotationLayerHandler handler) {
    method moveUpIndex (line 931) | public int moveUpIndex(AnnotationLayerHandler handler) {
    method setPearsonColorScale (line 941) | public void setPearsonColorScale(PearsonColorScale pearsonColorScale) {
    method getTrackPanelPrintouts (line 945) | public String getTrackPanelPrintouts(int x, int y) {
    method setLayersPanelVisible (line 949) | public void setLayersPanelVisible(boolean status) {
    method intializeLayersPanel (line 958) | public void intializeLayersPanel() {
    method setLayersPanelGUIControllersSelected (line 962) | public void setLayersPanelGUIControllersSelected(boolean status) {
    method togglePanelVisible (line 966) | public void togglePanelVisible() {
    method getAssemblyStateTracker (line 970) | public AssemblyStateTracker getAssemblyStateTracker() {
    method setAssemblyStateTracker (line 974) | public void setAssemblyStateTracker(AssemblyStateTracker assemblyState...
    method createCustomChromosomesFromBED (line 978) | public void createCustomChromosomesFromBED() {
    method createAssemblyChromosome (line 1001) | public void createAssemblyChromosome() {
    method createCustomChromosomeMap (line 1006) | public void createCustomChromosomeMap(Feature2DList featureList, Strin...
    method updateChrHandlerAndMVP (line 1011) | private void updateChrHandlerAndMVP(Chromosome custom) {
    method updateMiniAnnotationsLayerPanel (line 1017) | public void updateMiniAnnotationsLayerPanel() {
    method updateMainLayersPanel (line 1024) | public void updateMainLayersPanel() {
    method updatePreviousTempSelectedGroups (line 1031) | public void updatePreviousTempSelectedGroups(Feature2D tempSelectedGro...
    method safeClearAllMZDCache (line 1035) | public void safeClearAllMZDCache() {
    method exitAssemblyMode (line 1045) | public boolean exitAssemblyMode() {
    method safeLaunchImportNormalizations (line 1070) | public void safeLaunchImportNormalizations(boolean isControl) {
    method createGenomewideChromosomeFromChromDotSizes (line 1097) | public void createGenomewideChromosomeFromChromDotSizes() {
    method getNewResolutionGUI (line 1102) | public static int getNewResolutionGUI() {
    method safeLaunchCreateNewResolution (line 1117) | public void safeLaunchCreateNewResolution() {
    method clearEditsAndUpdateLayers (line 1127) | public void clearEditsAndUpdateLayers() {

FILE: src/juicebox/mapcolorui/BoundingBoxRenderer.java
  class BoundingBoxRenderer (line 35) | public class BoundingBoxRenderer {
    method BoundingBoxRenderer (line 40) | public BoundingBoxRenderer(HeatmapPanel heatmapPanel) {
    method drawAllByAllGrid (line 44) | public void drawAllByAllGrid(Graphics2D g, MatrixZoomData zd, boolean ...
    method getGridLineWidthLimit (line 90) | private int getGridLineWidthLimit(MatrixZoomData zd, long maxPosition,...
    method getGridLineHeightLimit (line 98) | private int getGridLineHeightLimit(MatrixZoomData zd, long maxPosition...
    method setChromosomeBoundaries (line 106) | public void setChromosomeBoundaries(long[] chromosomeBoundaries) {
    method drawRegularGrid (line 110) | public void drawRegularGrid(Graphics2D g, MatrixZoomData zd, boolean s...

FILE: src/juicebox/mapcolorui/ColorRangeDialog.java
  class ColorRangeDialog (line 43) | class ColorRangeDialog extends JDialog {
    method ColorRangeDialog (line 56) | public ColorRangeDialog(SuperAdapter superAdapter, JColorRangePanel co...
    method initComponents (line 73) | private void initComponents(final SuperAdapter superAdapter, final JCo...
    method setDimension (line 204) | private void setDimension(JTextField field) {
    method okButtonActionPerformed (line 210) | private void okButtonActionPerformed(ActionEvent e, SuperAdapter super...

FILE: src/juicebox/mapcolorui/ColorScaleHandler.java
  class ColorScaleHandler (line 42) | public class ColorScaleHandler {
    method getPearsonColorScale (line 48) | public PearsonColorScale getPearsonColorScale() {
    method reset (line 52) | public void reset() {
    method getDenseMatrixColor (line 57) | public Color getDenseMatrixColor(String key, float score, PearsonColor...
    method setNewDisplayRange (line 71) | public void setNewDisplayRange(MatrixType displayOption, double min, d...
    method getColorScale (line 98) | public ColorScale getColorScale(String key, MatrixType displayOption, ...
    method getColorScale (line 106) | public ColorScale getColorScale(String key, MatrixType displayOption, ...
    method updateColorSliderFromColorScale (line 139) | public void updateColorSliderFromColorScale(SuperAdapter superAdapter,...
    method computePercentile (line 158) | public float computePercentile(List<Block> blocks, double p) {
    method computePercentile (line 173) | public float computePercentile(BasicMatrix bm, double p) {
    method computePercentile (line 184) | public float computePercentile(BasicMatrix bm1, BasicMatrix bm2, doubl...

FILE: src/juicebox/mapcolorui/CursorRenderer.java
  class CursorRenderer (line 29) | public class CursorRenderer {
    method CursorRenderer (line 32) | public CursorRenderer(HeatmapPanel heatmapPanel) {
    method drawCursors (line 36) | public void drawCursors(Graphics2D g, Point cursorPoint, Point diagona...

FILE: src/juicebox/mapcolorui/Feature2DHandler.java
  class Feature2DHandler (line 47) | public class Feature2DHandler {
    method Feature2DHandler (line 59) | public Feature2DHandler() {
    method Feature2DHandler (line 64) | public Feature2DHandler(Feature2DList inputList) {
    method getRectangleFromFeature (line 69) | public Rectangle getRectangleFromFeature(HiCGridAxis xAxis, HiCGridAxi...
    method convertFeaturesToFeaturePairs (line 92) | public List<Feature2DGuiContainer> convertFeaturesToFeaturePairs(Annot...
    method clearLists (line 108) | protected void clearLists() {
    method getLayerVisibility (line 114) | public boolean getLayerVisibility() {
    method setLayerVisibility (line 118) | public void setLayerVisibility(boolean showLoops) {
    method remakeRTree (line 123) | protected void remakeRTree() {
    method setLoopList (line 143) | public resultContainer setLoopList(String path, ChromosomeHandler chro...
    method createNewMergedLoopLists (line 165) | public void createNewMergedLoopLists(List<Feature2DList> lists) {
    method setLoopList (line 176) | public void setLoopList(Feature2DList feature2DList) {
    method addToLoopList (line 181) | private void addToLoopList(Feature2DList feature2DList, boolean remake...
    method getAllVisibleLoops (line 188) | public Feature2DList getAllVisibleLoops() {
    method getNearbyFeatures (line 196) | public List<Feature2D> getNearbyFeatures(MatrixZoomData zd, int chrIdx...
    method getIntersectingFeatures (line 239) | public List<Feature2D> getIntersectingFeatures(int chrIdx1, int chrIdx...
    method getContainedFeatures (line 267) | public List<Feature2D> getContainedFeatures(int chrIdx1, int chrIdx2, ...
    method getGenomicPointFromXYCoordinate (line 292) | private net.sf.jsi.Point getGenomicPointFromXYCoordinate(double x, dou...
    method setSparsePlottingEnabled (line 299) | public void setSparsePlottingEnabled(boolean status) {
    method getIsSparsePlottingEnabled (line 303) | public boolean getIsSparsePlottingEnabled() {
    method getIsTransparent (line 307) | public boolean getIsTransparent() {
    method setIsTransparent (line 311) | public void setIsTransparent(boolean status) {
    method getIsEnlarged (line 315) | public boolean getIsEnlarged() {
    method setIsEnlarged (line 319) | public void setIsEnlarged(boolean status) {
    method setColorOfAllAnnotations (line 323) | public void setColorOfAllAnnotations(Color color) {
    method getFeatureList (line 328) | public Feature2DList getFeatureList() {
    method getContainedFeatures (line 332) | public List<Feature2D> getContainedFeatures(Chromosome chrom, int rect...
    class resultContainer (line 341) | public class resultContainer {
      method resultContainer (line 346) | resultContainer(int n, Color color, ArrayList<String> attributes) {

FILE: src/juicebox/mapcolorui/FeatureRenderer.java
  class FeatureRenderer (line 39) | public class FeatureRenderer {
    method render (line 43) | public static void render(Graphics2D g2, AnnotationLayerHandler annota...
    method plotSimple (line 128) | private static void plotSimple(Graphics2D g2, int x, int y, int w, int...
    method plotInUpperRight (line 137) | private static void plotInUpperRight(Graphics2D g2, int x, int y, int ...
    method plotInLowerLeft (line 146) | private static void plotInLowerLeft(Graphics2D g2, int x, int y, int w...
    method getNextState (line 155) | public static PlottingOption getNextState(PlottingOption state) {
    type PlottingOption (line 166) | public enum PlottingOption {ONLY_LOWER_LEFT, ONLY_UPPER_RIGHT, EVERYTH...
    type LineStyle (line 168) | public enum LineStyle {DASHED, SOLID}

FILE: src/juicebox/mapcolorui/GeneralTileManager.java
  class GeneralTileManager (line 37) | public class GeneralTileManager {
    method GeneralTileManager (line 42) | public GeneralTileManager(ColorScaleHandler colorScaleHandler) {
    method renderHiCTiles (line 46) | public boolean renderHiCTiles(HeatmapRenderer renderer, double binOrig...
    method bypassTileAndDirectlyDrawOnGraphics (line 160) | private void bypassTileAndDirectlyDrawOnGraphics(HeatmapRenderer rende...
    method clearTileCache (line 208) | public void clearTileCache() {
    class ImageTile (line 212) | static class ImageTile {
      method ImageTile (line 217) | ImageTile(Image image, int bLeft, int py0) {

FILE: src/juicebox/mapcolorui/HeatmapClickListener.java
  class HeatmapClickListener (line 48) | class HeatmapClickListener extends MouseAdapter implements ActionListener {
    method HeatmapClickListener (line 56) | HeatmapClickListener(HeatmapPanel heatmapPanel) {
    method actionPerformed (line 61) | @Override
    method mouseClicked (line 67) | @Override
    method unsafeMouseClickSubActionA (line 73) | private void unsafeMouseClickSubActionA(final MouseEvent eF) {
    method unsafeMouseClickSubActionB (line 107) | private void unsafeMouseClickSubActionB(double centerBinX, double cent...
    method safeMouseClicked (line 124) | private void safeMouseClicked(final MouseEvent eF) {
    method singleClick (line 150) | private void singleClick(final MouseEvent lastMouseEvent) {
    method removeAndRepaint (line 203) | private void removeAndRepaint() {
    method doubleClick (line 208) | private void doubleClick(MouseEvent lastMouseEvent) {

FILE: src/juicebox/mapcolorui/HeatmapMouseHandler.java
  class HeatmapMouseHandler (line 62) | public class HeatmapMouseHandler extends MouseAdapter {
    method HeatmapMouseHandler (line 102) | public HeatmapMouseHandler(HiC hic, SuperAdapter superAdapter, Heatmap...
    method getHighlightedFeature (line 113) | public List<Feature2D> getHighlightedFeature() {
    method eraseHighlightedFeatures (line 117) | public void eraseHighlightedFeatures() {
    method clearSelectedFeatures (line 122) | public void clearSelectedFeatures() {
    method getIsActivelyEditingAssembly (line 128) | public boolean getIsActivelyEditingAssembly() {
    method clearFeaturePairs (line 132) | public void clearFeaturePairs() {
    method getShouldShowHighlight (line 140) | public boolean getShouldShowHighlight() {
    method setActivelyEditingAssembly (line 144) | public void setActivelyEditingAssembly(boolean bool) {
    method getPopupMenu (line 148) | private JidePopupMenu getPopupMenu(final int xMousePos, final int yMou...
    method getDebrisFeature (line 448) | public Feature2D getDebrisFeature() {
    method getTempSelectedGroup (line 452) | public Feature2D getTempSelectedGroup() {
    method setTempSelectedGroup (line 456) | public void setTempSelectedGroup(Feature2D feature2D) {
    method getSelectedFeatures (line 460) | public List<Feature2D> getSelectedFeatures() {
    method addHighlightedFeatures (line 464) | private void addHighlightedFeatures(List<Feature2D> feature2DList) {
    method updateSelectedFeatures (line 474) | private void updateSelectedFeatures(boolean status) {
    method resetCurrentPromptedAssemblyAction (line 480) | public void resetCurrentPromptedAssemblyAction() {
    method getFloatString (line 484) | private String getFloatString(float value) {
    method getExpectedValue (line 496) | private double getExpectedValue(int c1, int c2, int binX, int binY, Ma...
    method executeSplitMenuAction (line 510) | private void executeSplitMenuAction() {
    method setFeatureOptionMenuEnabled (line 543) | public void setFeatureOptionMenuEnabled(boolean bool) {
    method getCurrentPromptedAssemblyAction (line 547) | public PromptedAssemblyAction getCurrentPromptedAssemblyAction() {
    method getPromptedAssemblyActionOnClick (line 551) | public PromptedAssemblyAction getPromptedAssemblyActionOnClick() {
    method setPromptedAssemblyActionOnClick (line 555) | public void setPromptedAssemblyActionOnClick(PromptedAssemblyAction pr...
    method mouseEntered (line 561) | @Override
    method reset (line 566) | public void reset() {
    method setProperCursor (line 570) | private void setProperCursor() {
    method addHighlightedFeature (line 578) | private void addHighlightedFeature(Feature2D feature2D) {
    method renderMouseAnnotations (line 588) | public void renderMouseAnnotations(Graphics2D g2) {
    method addAllFeatures (line 598) | public void addAllFeatures(AnnotationLayerHandler handler, List<Featur...
    method mouseExited (line 612) | @Override
    method mousePressed (line 620) | @Override
    method mouseReleased (line 737) | @Override
    method translationInProgressMouseReleased (line 971) | private void translationInProgressMouseReleased(List<Feature2D> newSel...
    method generateDebrisFeature (line 985) | Feature2D generateDebrisFeature(final MouseEvent eF, int debrisFeature...
    method restoreDefaultVariables (line 1000) | private void restoreDefaultVariables() {
    method unsafeDragging (line 1014) | private void unsafeDragging() {
    method mouseDragged (line 1042) | @Override
    method mouseMoved (line 1152) | @Override
    method mouseWheelMoved (line 1455) | @Override
    method calculateSelectionPoint (line 1495) | private Point calculateSelectionPoint(int unscaledX, int unscaledY) {
    method setDebrisFeauture (line 1514) | private void setDebrisFeauture(Feature2D debrisFeature) {
    method getMouseHoverSuperscaffold (line 1518) | private Feature2DGuiContainer getMouseHoverSuperscaffold(int x, int y) {
    method toolTipText (line 1534) | private String toolTipText(int x, int y) {
    method appendWithSpan (line 1800) | private void appendWithSpan(StringBuilder txt, List<Feature2D> selecte...
    method appendSectionWithSpan (line 1813) | private void appendSectionWithSpan(StringBuilder txt, String content) {
    method getChromFromBoundaries (line 1819) | private Chromosome getChromFromBoundaries(long[] chromosomeBoundaries,...
    method addJumpToDiagonalMenuItems (line 1830) | private void addJumpToDiagonalMenuItems(JidePopupMenu menu, int xMouse...
    method getAssemblyPopupMenu (line 1919) | private JidePopupMenu getAssemblyPopupMenu(final int xMousePos, final ...
    method moveSelectionToEndAndDisperse (line 2022) | void moveSelectionToEndAndDisperse() {
    method getCurrentUpstreamFeature (line 2030) | public Feature2DGuiContainer getCurrentUpstreamFeature() {
    method getCurrentDownstreamFeature (line 2034) | public Feature2DGuiContainer getCurrentDownstreamFeature() {
    type PromptedAssemblyAction (line 2038) | public enum PromptedAssemblyAction {REGROUP, PASTE, INVERT, CUT, ADJUS...
    type DragMode (line 2040) | private enum DragMode {ZOOM, ANNOTATE, RESIZE, PAN, SELECT, NONE}
    type AdjustAnnotation (line 2042) | private enum AdjustAnnotation {LEFT, RIGHT, NONE}

FILE: src/juicebox/mapcolorui/HeatmapPanel.java
  class HeatmapPanel (line 53) | public class HeatmapPanel extends JComponent {
    method HeatmapPanel (line 67) | public HeatmapPanel(SuperAdapter superAdapter) {
    method getChromosomeBoundaries (line 80) | public long[] getChromosomeBoundaries() {
    method setChromosomeBoundaries (line 84) | public void setChromosomeBoundaries(long[] chromosomeBoundaries) {
    method getMinimumDimension (line 89) | public int getMinimumDimension() {
    method paintComponent (line 93) | @Override
    method getThumbnailImage (line 212) | public Image getThumbnailImage(MatrixZoomData zd0, MatrixZoomData ctrl...
    method getShowGridLines (line 252) | public boolean getShowGridLines() {
    method setShowGridLines (line 256) | public void setShowGridLines(boolean showGridLines) {
    method getHiC (line 260) | public HiC getHiC() {
    method getMainWindow (line 264) | public MainWindow getMainWindow() {
    method getSuperAdapter (line 268) | public SuperAdapter getSuperAdapter() {
    method unsafeSetSelectedChromosomes (line 272) | public void unsafeSetSelectedChromosomes(Chromosome xChrom, Chromosome...
    method updateThumbnail (line 276) | public void updateThumbnail() {
    method clearTileCache (line 280) | public void clearTileCache() {
    method launchColorSelectionMenu (line 284) | public void launchColorSelectionMenu(Pair<Rectangle, Feature2D> select...
    method enableAssemblyEditing (line 295) | public void enableAssemblyEditing() {
    method disableAssemblyEditing (line 301) | public void disableAssemblyEditing() {
    method removeHighlightedFeature (line 309) | public void removeHighlightedFeature() {
    method removeSelection (line 316) | public void removeSelection() {
    method moveSelectionToEnd (line 339) | public void moveSelectionToEnd() {
    method reset (line 348) | public void reset() {
    method setNewDisplayRange (line 353) | public void setNewDisplayRange(MatrixType displayOption, double min, d...
    method getCurrentPromptedAssemblyAction (line 359) | public HeatmapMouseHandler.PromptedAssemblyAction getCurrentPromptedAs...
    method getPromptedAssemblyActionOnClick (line 363) | public HeatmapMouseHandler.PromptedAssemblyAction getPromptedAssemblyA...
    method setPromptedAssemblyActionOnClick (line 367) | public void setPromptedAssemblyActionOnClick(HeatmapMouseHandler.Promp...
    method getSelectedFeatures (line 371) | public List<Feature2D> getSelectedFeatures() {
    method getCurrentUpstreamFeature (line 375) | public Feature2DGuiContainer getCurrentUpstreamFeature() {
    method getCurrentDownstreamFeature (line 379) | public Feature2DGuiContainer getCurrentDownstreamFeature() {

FILE: src/juicebox/mapcolorui/HeatmapRenderer.java
  class HeatmapRenderer (line 46) | public class HeatmapRenderer {
    method HeatmapRenderer (line 53) | public HeatmapRenderer(Graphics2D g, ColorScaleHandler colorScaleHandl...
    method getColorScaleCacheKey (line 58) | public static String getColorScaleCacheKey(MatrixZoomData zd, MatrixTy...
    method render (line 62) | @SuppressWarnings("SuspiciousNameCombination")
    method renderLogRatioWithExpMap (line 362) | private void renderLogRatioWithExpMap(List<Block> blocks, List<Block> ...
    method convertBlockListToMap (line 422) | private Map<String, Block> convertBlockListToMap(List<Block> ctrlBlock...
    method renderLogRatioWithAvgMap (line 430) | private void renderLogRatioWithAvgMap(List<Block> blocks, List<Block> ...
    method renderDiffMap (line 457) | private void renderDiffMap(List<Block> blocks, List<Block> ctrlBlocks,
    method renderRatioWithExpMap (line 488) | private void renderRatioWithExpMap(List<Block> blocks, List<Block> ctr...
    method renderRatioWithAvgMap (line 515) | private void renderRatioWithAvgMap(List<Block> blocks, List<Block> ctr...
    method renderOERatioMinus (line 543) | private void renderOERatioMinus(List<Block> blocks, List<Block> ctrlBl...
    method linkRecords (line 611) | private Map<String, ContactRecord> linkRecords(MatrixZoomData zd, Norm...
    method renderOERatioMap (line 622) | private void renderOERatioMap(List<Block> blocks, List<Block> ctrlBlocks,
    method renderNewBaseEMap (line 689) | private void renderNewBaseEMap(int chr1, List<Block> blocks, ExpectedV...
    method renderExpectedMap (line 729) | private void renderExpectedMap(MatrixZoomData zd, ExpectedValueFunctio...
    method renderLogObsMinusExpVSMap (line 756) | private void renderLogObsMinusExpVSMap(int chr1, List<Block> blocks, L...
    method renderLogObsOverExpVSMap (line 803) | private void renderLogObsOverExpVSMap(int chr1, List<Block> blocks, Li...
    method renderSimpleLogVSMap (line 844) | private void renderSimpleLogVSMap(List<Block> blocks, List<Block> ctrl...
    method renderSimpleVSMap (line 887) | private void renderSimpleVSMap(List<Block> blocks, List<Block> ctrlBlo...
    method renderLogObservedBaseExpectedMap (line 929) | private void renderLogObservedBaseExpectedMap(int chromosome, List<Blo...
    method renderObservedOverExpectedVSMap (line 970) | private void renderObservedOverExpectedVSMap(int chromosome, List<Bloc...
    method getExpectedValue (line 1018) | private float getExpectedValue(ExpectedValueFunction df, int chromosom...
    method getExpectedValue (line 1022) | private float getExpectedValue(ExpectedValueFunction df, int chromosom...
    method renderObservedOverExpectedMap (line 1027) | private void renderObservedOverExpectedMap(int chromosome, List<Block>...
    method renderSimpleMap (line 1069) | private void renderSimpleMap(List<Block> blocks, ColorScale cs,
    method renderSimpleLogMap (line 1082) | private void renderSimpleLogMap(List<Block> blocks, ColorScale cs,
    method renderPearsonVS (line 1095) | private void renderPearsonVS(MatrixZoomData zd, MatrixZoomData controlZD,
    method renderPearson (line 1110) | private void renderPearson(MatrixZoomData zd, ExpectedValueFunction df,
    method renderNorm2VS (line 1120) | private void renderNorm2VS(MatrixZoomData zd, MatrixZoomData controlZD,
    method renderNorm2 (line 1135) | private void renderNorm2(MatrixZoomData zd, boolean isWholeGenome,
    method getTheBlocks (line 1145) | private List<Block> getTheBlocks(MatrixZoomData zd, int x, int y, int ...
    method renderDenseMatrix (line 1168) | private void renderDenseMatrix(BasicMatrix bm1, BasicMatrix bm2, int o...
    method updateColorSliderFromColorScale (line 1195) | public void updateColorSliderFromColorScale(SuperAdapter superAdapter,...
    method interPainting (line 1199) | private void interPainting(int originX, int originY, int width, int he...
    method simplePainting (line 1203) | private void simplePainting(ColorScale cs, int width, int height, bool...
    method logPainting (line 1211) | private boolean logPainting(ColorScale cs, float num, float den, float...
    method ratioPainting (line 1218) | private void ratioPainting(int originX, int originY, int width, int he...
    method intraPainting2 (line 1225) | private void intraPainting2(int originX, int originY, int width, int h...
    method intraPainting (line 1230) | private void intraPainting(int originX, int originY, int width, int he...
    method belowDiagonalPainting (line 1235) | @SuppressWarnings("SuspiciousNameCombination")
    method aboveDiagonalPainting (line 1245) | private void aboveDiagonalPainting(int originX, int originY, int width...
    method actualDiagonalPainting (line 1249) | private void actualDiagonalPainting(int originX, int originY, int widt...
    method directDensePainting (line 1257) | private void directDensePainting(int originX, int originY, int binX, i...
    method setColor (line 1263) | protected void setColor(Color color) {
    method directPixelPainting (line 1267) | protected void directPixelPainting(int px, int py) {
    method translate (line 1271) | public void translate(int x, int y) {
    method scale (line 1275) | public void scale(double sx, double sy) {
    method drawImage (line 1279) | public void drawImage(Image image, int xDest0, int yDest0, int xDest1,...
    method drawRect (line 1283) | public void drawRect(int x, int y, int width, int height) {

FILE: src/juicebox/mapcolorui/HiCMapTileManager.java
  class HiCMapTileManager (line 40) | public class HiCMapTileManager {
    method HiCMapTileManager (line 45) | public HiCMapTileManager(ColorScaleHandler colorScaleHandler) {
    method clearTileCache (line 49) | public void clearTileCache() {
    method getImageTile (line 53) | public GeneralTileManager.ImageTile getImageTile(MatrixZoomData zd, Ma...
    method renderDataWithCPU (line 85) | private BufferedImage renderDataWithCPU(JComponent parent, int bx0, in...
    method updateColorSliderFromColorScale (line 106) | public void updateColorSliderFromColorScale(SuperAdapter superAdapter,...

FILE: src/juicebox/mapcolorui/JColorRangePanel.java
  class JColorRangePanel (line 50) | public class JColorRangePanel extends JPanel {
    method JColorRangePanel (line 59) | public JColorRangePanel(final SuperAdapter superAdapter, final Heatmap...
    method setColorRangeSliderVisible (line 227) | public boolean setColorRangeSliderVisible(boolean state, SuperAdapter ...
    method updateColorSlider (line 241) | public void updateColorSlider(HiC hic, double lower, double upper, dou...
    method updateRatioColorSlider (line 293) | public void updateRatioColorSlider(HiC hic, double max, double val) {
    method getColorRangeValues (line 343) | public String getColorRangeValues() {
    method getColorRangeScaleFactor (line 354) | public double getColorRangeScaleFactor() {
    method colorRangeSliderUpdateToolTip (line 358) | private void colorRangeSliderUpdateToolTip(MatrixType displayOption) {
    method setElementsVisible (line 394) | public void setElementsVisible(boolean val, SuperAdapter superAdapter) {
    method handleNewFileLoading (line 401) | public void handleNewFileLoading(MatrixType option) {

FILE: src/juicebox/mapcolorui/OEColorScale.java
  class OEColorScale (line 38) | class OEColorScale implements ColorScale {
    method OEColorScale (line 44) | public OEColorScale(MatrixType type) {
    method resetThreshold (line 50) | private void resetThreshold() {
    method getColor (line 59) | public Color getColor(float score) {
    method getColor (line 109) | public Color getColor(String symbol) {
    method getNoDataColor (line 113) | public Color getNoDataColor() {
    method asString (line 117) | public String asString() {
    method isDefault (line 121) | public boolean isDefault() {
    method getMax (line 125) | public double getMax() {
    method getThreshold (line 133) | public float getThreshold() {
    method setThreshold (line 141) | public void setThreshold(double max) {

FILE: src/juicebox/mapcolorui/PearsonColorScale.java
  class PearsonColorScale (line 36) | public class PearsonColorScale {
    method PearsonColorScale (line 43) | public PearsonColorScale() {
    method getPosMax (line 46) | public float getPosMax(String key) {
    method getPosMin (line 50) | public float getPosMin(String key) {
    method getNegMax (line 54) | public float getNegMax(String key) {
    method getNegMin (line 58) | public float getNegMin(String key) {
    method setMinMax (line 62) | public void setMinMax(String key, float min, float max) {
    method setMinMax (line 66) | public void setMinMax(String key, float negMin, float negMax, float po...
    method getColor (line 74) | public Color getColor(String key, float score) {
    method getColor (line 99) | public Color getColor(String symbol) {
    method getNoDataColor (line 104) | public Color getNoDataColor() {
    method asString (line 108) | public String asString() {
    method isDefault (line 112) | public boolean isDefault() {
    method doesNotContainKey (line 116) | public boolean doesNotContainKey(String key) {
    method resetValues (line 120) | public void resetValues(String key) {

FILE: src/juicebox/mapcolorui/PearsonColorScaleEditor.java
  class PearsonColorScaleEditor (line 39) | public class PearsonColorScaleEditor extends JDialog {
    method PearsonColorScaleEditor (line 43) | public PearsonColorScaleEditor(final SuperAdapter superAdapter, final ...

FILE: src/juicebox/mapcolorui/RangeSlider.java
  class RangeSlider (line 40) | class RangeSlider extends JSlider {
    method RangeSlider (line 49) | public RangeSlider() {
    method initSlider (line 56) | private void initSlider() {
    method updateUI (line 64) | @Override
    method getLowerValue (line 74) | public int getLowerValue() {
    method setLowerValue (line 78) | public void setLowerValue(int value) {
    method setValue (line 86) | @Override
    method getUpperValue (line 106) | public int getUpperValue() {
    method setUpperValue (line 113) | public void setUpperValue(int value) {
    method setDisplayToOE (line 122) | public void setDisplayToOE(boolean colorIsOE) {
    method setDisplayToBlank (line 126) | public void setDisplayToBlank(boolean colorIsBlank) {

FILE: src/juicebox/mapcolorui/RangeSliderUI.java
  class RangeSliderUI (line 42) | class RangeSliderUI extends BasicSliderUI {
    method RangeSliderUI (line 83) | public RangeSliderUI(RangeSlider b) {
    method installUI (line 90) | @Override
    method createTrackListener (line 99) | @Override
    method createChangeListener (line 107) | @Override
    method calculateThumbSize (line 115) | @Override
    method calculateThumbLocation (line 127) | @Override
    method getThumbSize (line 177) | @Override
    method paint (line 186) | @Override
    method paintTrack (line 214) | @Override
    method drawSubTrackRectangles (line 281) | private void drawSubTrackRectangles(Graphics2D g, LinearGradientPaint ...
    method paintThumb (line 298) | @Override
    method paintLowerThumb (line 306) | private void paintLowerThumb(Graphics g) {
    method paintUpperThumb (line 314) | private void paintUpperThumb(Graphics g) {
    method setUpperThumbLocation (line 329) | private void setUpperThumbLocation(int x, int y) {
    method scrollByBlock (line 343) | public void scrollByBlock(int direction) {
    method scrollByUnit (line 365) | public void scrollByUnit(int direction) {
    method setDisplayToOE (line 379) | public void setDisplayToOE(boolean isOE) {
    method setDisplayToBlank (line 383) | public void setDisplayToBlank(boolean isBlank) {
    class ChangeHandler (line 394) | private class ChangeHandler implements ChangeListener {
      method stateChanged (line 395) | public void stateChanged(ChangeEvent arg0) {
    class RangeTrackListener (line 406) | class RangeTrackListener extends TrackListener {
      method mousePressed (line 408) | @Override
      method mouseReleased (line 470) | @Override
      method mouseDragged (line 481) | @Override
      method shouldScroll (line 501) | @Override
      method moveLowerThumb (line 510) | private void moveLowerThumb() {
      method moveUpperThumb (line 579) | private void moveUpperThumb() {

FILE: src/juicebox/mapcolorui/ResolutionControl.java
  class ResolutionControl (line 51) | public class ResolutionControl extends JPanel {
    method ResolutionControl (line 84) | public ResolutionControl(final SuperAdapter superAdapter) {
    method getUnitLabel (line 275) | private String getUnitLabel() {
    method setEnabled (line 279) | public void setEnabled(boolean enabled) {
    method reset (line 287) | public void reset() {
    method sizeToLabel (line 334) | private String sizeToLabel(int binSize) {
    method removeTrailingZeros (line 358) | private String removeTrailingZeros(String label) {
    method setZoom (line 362) | public void setZoom(HiCZoom newZoom) {
    method toggleLockButton (line 376) | private void toggleLockButton() {
    method updateLockButton (line 381) | private void updateLockButton() {
    method isResolutionLocked (line 385) | public boolean isResolutionLocked() {
    method setResolutionLocked (line 389) | public void setResolutionLocked(boolean resolutionLocked) {

FILE: src/juicebox/mapcolorui/ThumbnailPanel.java
  class ThumbnailPanel (line 41) | public class ThumbnailPanel extends JComponent {
    method ThumbnailPanel (line 50) | public ThumbnailPanel(final SuperAdapter superAdapter) {
    method setImage (line 102) | public void setImage(Image image) {
    method getName (line 106) | public String getName() {
    method setName (line 110) | public void setName(String nm) {
    method paintComponent (line 114) | @Override
    method renderVisibleWindow (line 127) | private void renderVisibleWindow(Graphics2D g) {
    class SquareDonut (line 170) | private static class SquareDonut implements Shape {
      method SquareDonut (line 173) | SquareDonut(Rectangle outerRectangle, Rectangle innerRectangle) {
      method getBounds (line 178) | public Rectangle getBounds() {
      method getBounds2D (line 182) | public Rectangle2D getBounds2D() {
      method contains (line 186) | public boolean contains(double v, double v1) {
      method contains (line 190) | public boolean contains(Point2D point2D) {
      method intersects (line 194) | public boolean intersects(double v, double v1, double v2, double v3) {
      method intersects (line 198) | public boolean intersects(Rectangle2D rectangle2D) {
      method contains (line 202) | public boolean contains(double v, double v1, double v2, double v3) {
      method contains (line 206) | public boolean contains(Rectangle2D rectangle2D) {
      method getPathIterator (line 210) | public PathIterator getPathIterator(AffineTransform affineTransform) {
      method getPathIterator (line 214) | public PathIterator getPathIterator(AffineTransform affineTransform,...

FILE: src/juicebox/matrix/BasicMatrix.java
  type BasicMatrix (line 32) | public interface BasicMatrix {
    method getEntry (line 34) | float getEntry(int row, int col);
    method getRowDimension (line 36) | int getRowDimension();
    method getColumnDimension (line 38) | int getColumnDimension();
    method getLowerValue (line 40) | float getLowerValue();
    method getUpperValue (line 42) | float getUpperValue();
    method setEntry (line 44) | void setEntry(int i, int j, float corr);

FILE: src/juicebox/matrix/DiskResidentBlockMatrix.java
  class DiskResidentBlockMatrix (line 59) | public class DiskResidentBlockMatrix implements BasicMatrix {
    method DiskResidentBlockMatrix (line 76) | public DiskResidentBlockMatrix(String path) throws IOException {
    method getChr1 (line 81) | public String getChr1() {
    method getEntry (line 85) | @Override
    method loadBlockData (line 112) | private synchronized float[][] loadBlockData(int blockRowIdx, int bloc...
    method getRowDimension (line 169) | @Override
    method getColumnDimension (line 174) | @Override
    method getLowerValue (line 180) | public float getLowerValue() {
    method getUpperValue (line 184) | public float getUpperValue() {
    method setEntry (line 188) | @Override
    method init (line 193) | private void init() throws IOException {

FILE: src/juicebox/matrix/InMemoryMatrix.java
  class InMemoryMatrix (line 40) | public class InMemoryMatrix implements BasicMatrix {
    method InMemoryMatrix (line 49) | public InMemoryMatrix(int dim) {
    method InMemoryMatrix (line 54) | public InMemoryMatrix(int dim, float[] data) {
    method fill (line 59) | public void fill(float value) {
    method getEntry (line 68) | @Override
    method setEntry (line 75) | public void setEntry(int row, int col, float value) {
    method getRowDimension (line 86) | @Override
    method getColumnDimension (line 91) | @Override
    method getLowerValue (line 96) | @Override
    method getUpperValue (line 105) | @Override
    method computeBounds (line 113) | private void computeBounds() {

FILE: src/juicebox/matrix/RealMatrixWrapper.java
  class RealMatrixWrapper (line 37) | public class RealMatrixWrapper implements BasicMatrix {
    method RealMatrixWrapper (line 43) | public RealMatrixWrapper(RealMatrix matrix) {
    method getEntry (line 48) | @Override
    method getRowDimension (line 53) | @Override
    method getColumnDimension (line 58) | @Override
    method getLowerValue (line 63) | @Override
    method getUpperValue (line 68) | @Override
    method setEntry (line 73) | @Override
    method computePercentiles (line 78) | private void computePercentiles() {
    method getMatrix (line 101) | public RealMatrix getMatrix() {

FILE: src/juicebox/matrix/SparseSymmetricMatrix.java
  class SparseSymmetricMatrix (line 43) | public class SparseSymmetricMatrix implements BasicMatrix {
    method SparseSymmetricMatrix (line 53) | public SparseSymmetricMatrix(int numValsEstimate) {
    method populateMatrix (line 60) | public void populateMatrix(List<ContactRecord> list, int[] offset) {
    method multiply (line 71) | public double[] multiply(double[] vector) {
    method getEntry (line 111) | @Override
    method notImplementedDontCall (line 120) | private void notImplementedDontCall() {
    method getRowDimension (line 125) | @Override
    method getColumnDimension (line 131) | @Override
    method getLowerValue (line 137) | @Override
    method getUpperValue (line 143) | @Override
    method setEntry (line 149) | @Override

FILE: src/juicebox/matrix/SparseVector.java
  class SparseVector (line 33) | class SparseVector {
    method SparseVector (line 38) | public SparseVector(int length) {
    method set (line 43) | public void set(Integer i, Double v) {
    method getLength (line 50) | public int getLength() {
    method get (line 54) | public Double get(Integer idx) {
    method getIndeces (line 58) | public Collection<Integer> getIndeces() {
    method getMean (line 67) | public Double getMean() {

FILE: src/juicebox/matrix/SymmetricMatrix.java
  class SymmetricMatrix (line 41) | public class SymmetricMatrix implements BasicMatrix {
    method SymmetricMatrix (line 49) | public SymmetricMatrix(int dim) {
    method nullColumn (line 57) | public void nullColumn(int i) {
    method getNullColumns (line 61) | public Set<Integer> getNullColumns() {
    method fill (line 65) | public void fill(float value) {
    method setEntry (line 69) | public void setEntry(int i, int j, float value) {
    method getIdx (line 74) | private int getIdx(int i, int j) {
    method getColumnMean (line 82) | public float getColumnMean(int j) {
    method getRowMean (line 95) | public float getRowMean(int i) {
    method getEntry (line 109) | @Override
    method getRowDimension (line 115) | @Override
    method getColumnDimension (line 120) | @Override
    method getLowerValue (line 125) | @Override
    method getUpperValue (line 133) | @Override
    method computePercentiles (line 141) | private void computePercentiles() {

FILE: src/juicebox/state/ImportStateFileDialog.java
  class ImportStateFileDialog (line 46) | public class ImportStateFileDialog extends JFileChooser {
    method ImportStateFileDialog (line 51) | public ImportStateFileDialog(File currentStates, MainWindow mainWindow) {
    method copyFile (line 56) | private static void copyFile(File sourceFile, File destFile) throws IO...
    method loadFile (line 78) | private void loadFile(File currentFile, MainWindow mainWindow) {
    class SimpleErrorHandler (line 114) | private static class SimpleErrorHandler implements ErrorHandler {
      method warning (line 115) | public void warning(SAXParseException e) {
      method error (line 119) | public void error(SAXParseException e) {
      method fatalError (line 123) | public void fatalError(SAXParseException e) {

FILE: src/juicebox/state/LoadStateFromXMLFile.java
  class LoadStateFromXMLFile (line 42) | public class LoadStateFromXMLFile {
    method reloadSelectedState (line 44) | public static void reloadSelectedState(SuperAdapter superAdapter, Stri...
    method loadSavedStatePreliminaryStep (line 54) | private static void loadSavedStatePreliminaryStep(String[] infoForRelo...
    method safeLoadStateFromXML (line 99) | private static void safeLoadStateFromXML(final SuperAdapter superAdapt...
    method unsafeLoadStateFromXML (line 115) | private static void unsafeLoadStateFromXML(SuperAdapter superAdapter, ...

FILE: src/juicebox/state/SaveFileDialog.java
  class SaveFileDialog (line 43) | public class SaveFileDialog extends JFileChooser {
    method SaveFileDialog (line 46) | public SaveFileDialog(File fileToSave) {
    method copyFile (line 71) | private static void copyFile(File sourceFile, File destFile) throws IO...

FILE: src/juicebox/state/Slideshow.java
  class Slideshow (line 50) | public class Slideshow extends JDialog {
    method Slideshow (line 64) | public Slideshow(MainWindow mainWindow, final SuperAdapter superAdapte...
    method currentSlideNumber (line 180) | public int currentSlideNumber() {
    method currentSlideName (line 184) | public String currentSlideName(int count) {

FILE: src/juicebox/state/State.java
  class State (line 30) | class State {

FILE: src/juicebox/state/XMLFileHandling.java
  class XMLFileHandling (line 46) | public class XMLFileHandling {
    method addNewStateToXML (line 47) | public static void addNewStateToXML(String stateID, SuperAdapter super...

FILE: src/juicebox/state/XMLFileParser.java
  class XMLFileParser (line 40) | class XMLFileParser {
    method parseXML (line 42) | public static String[] parseXML(String mapSelection) {
    class SimpleErrorHandler (line 89) | private static class SimpleErrorHandler implements ErrorHandler {
      method warning (line 90) | public void warning(SAXParseException e) {
      method error (line 94) | public void error(SAXParseException e) {
      method fatalError (line 98) | public void fatalError(SAXParseException e) {

FILE: src/juicebox/state/XMLFileWriter.java
  class XMLFileWriter (line 46) | public class XMLFileWriter {
    method overwriteXMLFile (line 51) | public static void overwriteXMLFile() {
    method initXML (line 68) | private static Element initXML() throws ParserConfigurationException {
    method convert (line 78) | private static void convert(String s, Element root) {
    method writeXML (line 118) | private static void writeXML() throws TransformerException {

FILE: src/juicebox/tools/HiCTools.java
  class HiCTools (line 42) | public class HiCTools {
    method main (line 44) | public static void main(String[] argv) throws CmdLineParser.UnknownOpt...

FILE: src/juicebox/tools/chrom/sizes/ChromosomeSizes.java
  class ChromosomeSizes (line 30) | public class ChromosomeSizes {

FILE: src/juicebox/tools/clt/AggregateProcessing.java
  class AggregateProcessing (line 31) | class AggregateProcessing {
    method main (line 32) | public static void main(String[] argv) throws Exception {

FILE: src/juicebox/tools/clt/CLTFactory.java
  class CLTFactory (line 42) | public class CLTFactory {
    method generalUsage (line 66) | public static void generalUsage() {
    method getCLTCommand (line 78) | public static JuiceboxCLT getCLTCommand(String cmd) {

FILE: src/juicebox/tools/clt/CommandLineParser.java
  class CommandLineParser (line 36) | public class CommandLineParser extends CmdLineParser {
    method CommandLineParser (line 98) | public CommandLineParser() {
    method optionToBoolean (line 105) | protected boolean optionToBoolean(Option option) {
    method getHelpOption (line 110) | public boolean getHelpOption() { return optionToBoolean(helpOption);}
    method getDiagonalsOption (line 112) | public boolean getDiagonalsOption() {
    method useCacheMemory (line 116) | public boolean useCacheMemory() {
    method getVerboseOption (line 120) | public boolean getVerboseOption() {
    method getNoNormOption (line 124) | public boolean getNoNormOption() { return optionToBoolean(noNormOption...
    method getAllPearsonsOption (line 126) | public boolean getAllPearsonsOption() {
    method getNoFragNormOption (line 130) | public boolean getNoFragNormOption() {
    method getVersionOption (line 134) | public boolean getVersionOption() {
    method getRandomizePositionsOption (line 138) | public boolean getRandomizePositionsOption() {
    method getThrowIntraFragOption (line 142) | public boolean getThrowIntraFragOption() {
    method getDontPutAllContactsIntoRAM (line 146) | public boolean getDontPutAllContactsIntoRAM() {
    method shouldCheckRAMUsage (line 150) | public boolean shouldCheckRAMUsage() {
    method getFromHICOption (line 154) | public boolean getFromHICOption() { return optionToBoolean(fromHIC); }
    method optionToString (line 159) | protected String optionToString(Option option) {
    method getFragmentOption (line 164) | public String getFragmentOption() {
    method getStatsOption (line 168) | public String getStatsOption() {
    method getGraphOption (line 172) | public String getGraphOption() {
    method getGenomeOption (line 176) | public String getGenomeOption() { return optionToString(genomeIDOption...
    method getTmpdirOption (line 178) | public String getTmpdirOption() {
    method getExpectedVectorOption (line 182) | public String getExpectedVectorOption() {
    method getMndIndexOption (line 186) | public String getMndIndexOption() {
    method getLigationOption (line 190) | public String getLigationOption() {
    method getShellOption (line 194) | public String getShellOption() {
    method getAlignmentOption (line 198) | public Alignment getAlignmentOption() {
    method optionToInt (line 222) | protected int optionToInt(Option option) {
    method getBlockCapacityOption (line 227) | public int getBlockCapacityOption() {
    method getCountThresholdOption (line 231) | public int getCountThresholdOption() {
    method getMapqThresholdOption (line 235) | public int getMapqThresholdOption() {
    method getGenomeWideOption (line 239) | public int getGenomeWideOption() {
    method optionToLong (line 243) | protected long optionToLong(Option option) {
    method getRandomPositionSeedOption (line 248) | public long getRandomPositionSeedOption() {
    type Alignment (line 252) | public enum Alignment {INNER, OUTER, LL, RR, TANDEM}
    method getNumThreads (line 254) | public int getNumThreads() {
    method getNumMatrixOperationThreads (line 258) | public int getNumMatrixOperationThreads() {
    method getV9DepthBase (line 262) | public int getV9DepthBase() {
    method optionToDouble (line 269) | protected double optionToDouble(Option option) {
    method getScalingOption (line 274) | public double getScalingOption() {
    method getSubsampleOption (line 280) | public double getSubsampleOption() { return optionToDouble(subsampleOp...
    method optionToStringSet (line 285) | protected Set<String> optionToStringSet(Option option) {
    method optionToStringList (line 290) | protected List<String> optionToStringList(Option option) {
    method getChromosomeSetOption (line 295) | public Set<String> getChromosomeSetOption() {
    method getResolutionOption (line 299) | public List<String> getResolutionOption() {
    method getRandomizePositionMaps (line 303) | public Set<String> getRandomizePositionMaps() {return optionToStringSe...
    method optionToIntList (line 308) | protected List<Integer> optionToIntList(Option option) {
    method getMultipleMapQOptions (line 321) | public List<Integer> getMultipleMapQOptions() {return optionToIntList(...
    method getAllNormalizationTypesOption (line 323) | public List<NormalizationType> getAllNormalizationTypesOption() {
    method retrieveNormalization (line 338) | protected NormalizationType retrieveNormalization(String norm, Normali...

FILE: src/juicebox/tools/clt/CommandLineParserForJuicer.java
  class CommandLineParserForJuicer (line 36) | public class CommandLineParserForJuicer extends CommandLineParser {
    method CommandLineParserForJuicer (line 74) | public CommandLineParserForJuicer() {
    method isJuicerCommand (line 77) | public static boolean isJuicerCommand(String cmd) {
    method getLegacyOutputOption (line 84) | public boolean getLegacyOutputOption() {
    method getIncludeInterChromosomal (line 88) | public boolean getIncludeInterChromosomal() {
    method getAPASaveAllData (line 93) | public boolean getAPASaveAllData() {
    method getAPADontIncludePlots (line 97) | public boolean getAPADontIncludePlots() {
    method getNormalizationTypeOption (line 104) | public NormalizationType getNormalizationTypeOption(NormalizationHandl...
    method getBothNormalizationTypeOption (line 108) | public NormalizationType[] getBothNormalizationTypeOption(Normalizatio...
    method getAPAWindowSizeOption (line 132) | public int getAPAWindowSizeOption() {
    method getMatrixSizeOption (line 136) | public int getMatrixSizeOption() {
    method getExpandSize (line 140) | public int getExpandSize() { return optionToInt(expandSize);}
    method getNumPeaks (line 142) | public int getNumPeaks() { return optionToInt(numPeaks);}
    method getAPAMinVal (line 148) | public double getAPAMinVal() {
    method getAPAMaxVal (line 152) | public double getAPAMaxVal() {
    method getChromosomeListOption (line 160) | List<String> getChromosomeListOption() {
    method getMultipleResolutionOptions (line 165) | public List<String> getMultipleResolutionOptions() {
    method getAPACornerRegionDimensionOptions (line 169) | public List<String> getAPACornerRegionDimensionOptions() {
    method getFDROptions (line 173) | public List<String> getFDROptions() {
    method getPeakOptions (line 177) | public List<String> getPeakOptions() {
    method getWindowOptions (line 181) | public List<String> getWindowOptions() {
    method getClusterRadiusOptions (line 185) | public List<String> getClusterRadiusOptions() {
    method getThresholdOptions (line 189) | public List<String> getThresholdOptions() {
    method getCPUVersionOfHiCCUPSOptions (line 193) | public boolean getCPUVersionOfHiCCUPSOptions() {
    method restrictSearchRegionsOptions (line 198) | public boolean restrictSearchRegionsOptions() {

FILE: src/juicebox/tools/clt/JuiceboxCLT.java
  class JuiceboxCLT (line 37) | public abstract class JuiceboxCLT {
    method JuiceboxCLT (line 46) | protected JuiceboxCLT(String usage) {
    method splitToList (line 50) | public static String[] splitToList(String nextLine) {
    method readArguments (line 54) | public abstract void readArguments(String[] args, CommandLineParser pa...
    method run (line 56) | public abstract void run();
    method setUsage (line 58) | private void setUsage(String newUsage) {
    method printUsageAndExit (line 62) | public void printUsageAndExit() {
    method printUsageAndExit (line 67) | public void printUsageAndExit(int exitcode) {
    method setDatasetAndNorm (line 72) | protected void setDatasetAndNorm(String files, String normType, boolea...
    method getAppropriateNumberOfThreads (line 84) | public static int getAppropriateNumberOfThreads(int numThreads, int de...
    method updateNumberOfCPUThreads (line 94) | protected void updateNumberOfCPUThreads(CommandLineParser parser, int ...
    method updateSecondaryNumberOfCPUThreads (line 100) | protected void updateSecondaryNumberOfCPUThreads(CommandLineParser par...

FILE: src/juicebox/tools/clt/JuicerCLT.java
  class JuicerCLT (line 41) | public abstract class JuicerCLT extends JuiceboxCLT {
    method JuicerCLT (line 46) | protected JuicerCLT(String usage) {
    method determineHowManyChromosomesWillActuallyRun (line 50) | protected int determineHowManyChromosomesWillActuallyRun(Dataset ds, C...
    method readArguments (line 61) | @Override
    method readJuicerArguments (line 68) | protected abstract void readJuicerArguments(String[] args, CommandLine...
    method assessIfChromosomesHaveBeenSpecified (line 70) | private void assessIfChromosomesHaveBeenSpecified(CommandLineParserFor...

FILE: src/juicebox/tools/clt/UnitTests.java
  class UnitTests (line 48) | class UnitTests {
    method pearsonsAndEigenvector (line 50) | public static void pearsonsAndEigenvector() {
    method toDenseMatrix (line 78) | private static float[][] toDenseMatrix(BasicMatrix bm1) {
    method testingMergerOfHiCCUPSPostprocessing (line 88) | private static void testingMergerOfHiCCUPSPostprocessing() {
    method testingHiCCUPSPostprocessing (line 129) | public static void testingHiCCUPSPostprocessing() {

FILE: src/juicebox/tools/clt/juicer/ABCompartmentsDiff.java
  class ABCompartmentsDiff (line 47) | public class ABCompartmentsDiff extends JuicerCLT {
    method ABCompartmentsDiff (line 54) | public ABCompartmentsDiff() {
    method readJuicerArguments (line 59) | @Override
    method run (line 96) | @Override

FILE: src/juicebox/tools/clt/juicer/APA.java
  class APA (line 116) | public class APA extends JuicerCLT {
    method APA (line 137) | public APA() {
    method getBasicUsage (line 144) | public static String getBasicUsage() {
    method initializeDirectly (line 148) | public void initializeDirectly(String inputHiCFileName, String inputPe...
    method readJuicerArguments (line 161) | @Override
    method run (line 216) | @Override
    method runWithReturn (line 222) | public APARegionStatistics runWithReturn() {

FILE: src/juicebox/tools/clt/juicer/Arrowhead.java
  class Arrowhead (line 106) | public class Arrowhead extends JuicerCLT {
    method Arrowhead (line 117) | public Arrowhead() {
    method getBasicUsage (line 123) | public static String getBasicUsage() {
    method readJuicerArguments (line 127) | @Override
    method run (line 175) | @Override

FILE: src/juicebox/tools/clt/juicer/CompareLists.java
  class CompareLists (line 41) | public class CompareLists extends JuicerCLT {
    method CompareLists (line 55) | public CompareLists() {
    method readJuicerArguments (line 63) | @Override
    method run (line 92) | @Override
    method generateHistogramMetrics (line 117) | private void generateHistogramMetrics(Feature2DList list) {
    method compareTwoLists (line 123) | private void compareTwoLists(Feature2DList listA, Feature2DList listB,...

FILE: src/juicebox/tools/clt/juicer/HiCCUPS.java
  class HiCCUPS (line 158) | public class HiCCUPS extends JuicerCLT {
    method HiCCUPS (line 205) | public HiCCUPS() {
    method getBasicUsage (line 213) | public static String getBasicUsage() {
    method readJuicerArguments (line 217) | @Override
    method initializeDirectly (line 265) | public void initializeDirectly(Dataset dataset, String outputDirectory...
    method run (line 301) | @Override
    method runHiccupsProcessing (line 367) | private Feature2DList runHiccupsProcessing(Dataset ds, final HiCCUPSCo...
    method runCoreCodeForHiCCUPS (line 475) | private void runCoreCodeForHiCCUPS(HiCCUPSConfiguration conf, AtomicIn...
    method buildGPUController (line 556) | private GPUController buildGPUController(HiCCUPSConfiguration conf) {
    method determineValidConfigurations (line 573) | private void determineValidConfigurations(CommandLineParserForJuicer j...
    method determineValidMatrixSize (line 601) | private void determineValidMatrixSize(CommandLineParserForJuicer juice...
    method determineValidMatrixSize (line 605) | private void determineValidMatrixSize(int specifiedMatrixSize) {
    method setHiCCUPSFDROEThresholds (line 615) | private void setHiCCUPSFDROEThresholds(double[] thresholds) {

FILE: src/juicebox/tools/clt/juicer/HiCCUPS2.java
  class HiCCUPS2 (line 72) | public class HiCCUPS2 extends JuicerCLT {
    method HiCCUPS2 (line 121) | public HiCCUPS2() {
    method getBasicUsage (line 128) | public static String getBasicUsage() {
    method readJuicerArguments (line 132) | @Override
    method initializeDirectly (line 181) | public void initializeDirectly(Dataset dataset, String outputDirectory...
    method run (line 220) | @Override
    method runHiccups2Processing (line 287) | private Feature2DList runHiccups2Processing(Dataset ds, final HiCCUPSC...
    method runCoreCodeForHiCCUPS2 (line 458) | private void runCoreCodeForHiCCUPS2(HiCCUPSConfiguration conf, AtomicI...
    method buildGPUController (line 545) | private GPUController2 buildGPUController(HiCCUPSConfiguration conf) {
    method determineValidConfigurations (line 562) | private void determineValidConfigurations(CommandLineParserForJuicer j...
    method determineValidMatrixSize (line 595) | private void determineValidMatrixSize(CommandLineParserForJuicer juice...
    method determineValidMatrixSize (line 599) | private void determineValidMatrixSize(int specifiedMatrixSize) {
    method setHiCCUPSFDROEThresholds (line 609) | private void setHiCCUPSFDROEThresholds(double[] thresholds) {

FILE: src/juicebox/tools/clt/juicer/HiCCUPSDiff.java
  class HiCCUPSDiff (line 63) | public class HiCCUPSDiff extends JuicerCLT {
    method HiCCUPSDiff (line 75) | public HiCCUPSDiff() {
    method getBasicUsage (line 83) | public static String getBasicUsage() {
    method readJuicerArguments (line 87) | @Override
    method run (line 194) | @Override

FILE: src/juicebox/tools/clt/juicer/HiCCUPSRegionHandler.java
  class HiCCUPSRegionHandler (line 42) | public class HiCCUPSRegionHandler {
    method HiCCUPSRegionHandler (line 49) | public HiCCUPSRegionHandler(Dataset ds, ChromosomeHandler chromosomeHa...
    method calculateRegionBounds (line 120) | private int[] calculateRegionBounds(int index, int regionWidth, int ch...
    method getSize (line 133) | public int getSize() {
    method getRegionFromIndex (line 137) | public synchronized HiCCUPSRegionContainer getRegionFromIndex(int inde...
    method getZoomData (line 141) | public MatrixZoomData getZoomData(HiCCUPSRegionContainer regionContain...
    method getNormalizationVector (line 145) | public double[] getNormalizationVector(HiCCUPSRegionContainer regionCo...
    method getExpectedVector (line 149) | public double[] getExpectedVector(HiCCUPSRegionContainer regionContain...

FILE: src/juicebox/tools/clt/juicer/HiCCUPSscores.java
  class HiCCUPSscores (line 62) | public class HiCCUPSscores extends JuicerCLT {
    method HiCCUPSscores (line 111) | public HiCCUPSscores() {
    method getBasicUsage (line 118) | public static String getBasicUsage() {
    method readJuicerArguments (line 122) | @Override
    method initializeDirectly (line 170) | public void initializeDirectly(Dataset dataset, String outputDirectory...
    method run (line 209) | @Override
    method runHiccupsScoresProcessing (line 267) | private void runHiccupsScoresProcessing(Dataset ds, final HiCCUPSConfi...
    method runCoreCodeForHiCCUPS2 (line 333) | private void runCoreCodeForHiCCUPS2(HiCCUPSConfiguration conf, AtomicI...
    method buildGPUController (line 401) | private GPUController2 buildGPUController(HiCCUPSConfiguration conf) {
    method determineValidConfigurations (line 418) | private void determineValidConfigurations(CommandLineParserForJuicer j...
    method determineValidMatrixSize (line 451) | private void determineValidMatrixSize(CommandLineParserForJuicer juice...
    method determineValidMatrixSize (line 455) | private void determineValidMatrixSize(int specifiedMatrixSize) {
    method setHiCCUPSFDROEThresholds (line 465) | private void setHiCCUPSFDROEThresholds(double[] thresholds) {

FILE: src/juicebox/tools/clt/juicer/Localizer.java
  class Localizer (line 65) | public class Localizer extends JuicerCLT {
    method Localizer (line 92) | public Localizer() {
    method getBasicUsage (line 99) | public static String getBasicUsage() {
    method initializeDirectly (line 103) | public void initializeDirectly(String inputHiCFileName, String inputPe...
    method readJuicerArguments (line 117) | @Override
    method run (line 172) | @Override

FILE: src/juicebox/tools/clt/juicer/LoopDomains.java
  class LoopDomains (line 43) | public class LoopDomains extends JuicerCLT {
    method LoopDomains (line 73) | public LoopDomains() {
    method readJuicerArguments (line 80) | @Override
    method run (line 110) | @Override

FILE: src/juicebox/tools/clt/juicer/MotifFinder.java
  class MotifFinder (line 44) | public class MotifFinder extends JuicerCLT {
    method MotifFinder (line 56) | public MotifFinder() {
    method getIntersectionOfBEDFiles (line 61) | private static GenomeWideList<GenericLocus> getIntersectionOfBEDFiles(...
    method readJuicerArguments (line 70) | @Override
    method run (line 105) | @Override
    method findInferredMotifs (line 119) | private void findInferredMotifs(ChromosomeHandler handler, Feature2DLi...
    method setUpThreeTieredFiltration (line 167) | private void setUpThreeTieredFiltration() {
    method getThreeTierFilteredProteinTrack (line 181) | private GenomeWideList<GenericLocus> getThreeTierFilteredProteinTrack(...
    method findUniqueMotifs (line 211) | private void findUniqueMotifs(ChromosomeHandler handler, Feature2DList...
    method retrieveFreshMotifs (line 247) | private GenomeWideList<MotifAnchor> retrieveFreshMotifs() {
    method retrieveAllBEDFiles (line 268) | private void retrieveAllBEDFiles(String path) throws IOException {
    method retrieveBEDFilesByExtensionInFolder (line 287) | private List<String> retrieveBEDFilesByExtensionInFolder(String direct...

FILE: src/juicebox/tools/clt/old/AddNorm.java
  class AddNorm (line 43) | public class AddNorm extends JuiceboxCLT {
    method AddNorm (line 52) | public AddNorm() {
    method getBasicUsage (line 66) | public static String getBasicUsage() {
    method defaultHashMapForResToBuildTo (line 70) | public static Map<NormalizationType, Integer> defaultHashMapForResToBu...
    method launch (line 78) | public static void launch(String outputFile, List<NormalizationType> n...
    method readArguments (line 86) | @Override
    method run (line 130) | @Override

FILE: src/juicebox/tools/clt/old/BPToFragment.java
  class BPToFragment (line 40) | public class BPToFragment extends JuiceboxCLT {
    method BPToFragment (line 44) | public BPToFragment() {
    method bpToFrag (line 48) | private static void bpToFrag(String fragmentFile, String inputFile, St...
    method annotateWithSites (line 110) | private static void annotateWithSites(Map<String, int[]> fragmentMap, ...
    method getChrAlias (line 156) | private static String getChrAlias(String token) {
    method readArguments (line 166) | @Override
    method run (line 178) | @Override
    class BedLikeFeature (line 187) | private static class BedLikeFeature implements Locatable {
      method BedLikeFeature (line 195) | BedLikeFeature(String line) {
      method getStart (line 209) | public int getStart() {
      method setStart (line 213) | public void setStart(int start) {
      method getEnd (line 217) | public int getEnd() {
      method setEnd (line 221) | public void setEnd(int end) {
      method getScore (line 225) | public float getScore() {
      method getContig (line 229) | @Override

FILE: src/juicebox/tools/clt/old/BigWig.java
  class BigWig (line 32) | public class BigWig extends JuiceboxCLT {
    method BigWig (line 38) | public BigWig() {
    method readArguments (line 42) | @Override
    method run (line 65) | @Override

FILE: src/juicebox/tools/clt/old/BinToPairs.java
  class BinToPairs (line 32) | public class BinToPairs extends JuiceboxCLT {
    method BinToPairs (line 36) | public BinToPairs() {
    method readArguments (line 40) | @Override
    method run (line 49) | @Override

FILE: src/juicebox/tools/clt/old/CalcKR.java
  class CalcKR (line 42) | public class CalcKR extends JuiceboxCLT {
    method CalcKR (line 46) | public CalcKR() {
    method readArguments (line 50) | @Override
    method calcKR (line 59) | public static void calcKR(String path) throws IOException {
    method run (line 94) | @Override

FILE: src/juicebox/tools/clt/old/CalcMatrixSum.java
  class CalcMatrixSum (line 45) | public class CalcMatrixSum extends JuiceboxCLT {
    method CalcMatrixSum (line 52) | public CalcMatrixSum() {
    method getKeyWithNorm (line 56) | private static String getKeyWithNorm(Chromosome chromosome, HiCZoom zo...
    method readArguments (line 60) | @Override
    method run (line 82) | @Override
    method getNormMatrixSumFactor (line 171) | public Double[] getNormMatrixSumFactor(double[] norm, IteratorContaine...
    method testCode (line 198) | private void testCode(HiCZoom zoom, List<ContactRecord> contactRecordL...

FILE: src/juicebox/tools/clt/old/Dump.java
  class Dump (line 50) | public class Dump extends JuiceboxCLT {
    method Dump (line 68) | public Dump() {
    method getUsage (line 72) | public static String getUsage(){
    method dumpGenomeWideData (line 78) | private void dumpGenomeWideData() {
    method dumpGeneralVector (line 173) | private void dumpGeneralVector() {
    method dumpMatrix (line 226) | private void dumpMatrix() throws IOException {
    method dumpFeature (line 259) | private void dumpFeature() throws IOException {
    method readArguments (line 283) | @Override
    method setQuery (line 401) | public void setQuery(String chr1, String chr2, int binSize) {
    method getBpBinSizes (line 408) | public int[] getBpBinSizes() {
    method extractChromosomeRegionIndices (line 419) | private void extractChromosomeRegionIndices() {
    method run (line 475) | @Override
    method getChromosomeHandler (line 498) | public ChromosomeHandler getChromosomeHandler() {

FILE: src/juicebox/tools/clt/old/Eigenvector.java
  class Eigenvector (line 46) | public class Eigenvector extends JuiceboxCLT {
    method Eigenvector (line 53) | public Eigenvector() {
    method getUsage (line 57) | public static String getUsage(){
    method readArguments (line 61) | @Override
    method run (line 111) | @Override

FILE: src/juicebox/tools/clt/old/FragmentToBed.java
  class FragmentToBed (line 35) | public class FragmentToBed extends JuiceboxCLT {
    method FragmentToBed (line 39) | public FragmentToBed() {
    method fragToBed (line 49) | private static void fragToBed(String filename) throws IOException {
    method readArguments (line 81) | @Override
    method run (line 90) | @Override

FILE: src/juicebox/tools/clt/old/LibraryComplexity.java
  class LibraryComplexity (line 41) | public class LibraryComplexity extends JuiceboxCLT {
    method LibraryComplexity (line 51) | public LibraryComplexity(String command) {
    method getUsage (line 56) | private static String getUsage() {
    method estimateLibrarySize (line 73) | public static long estimateLibrarySize(final long duplicateReadPairs,
    method f (line 113) | private static double f(double x, double c, double n) {
    method readArguments (line 117) | @Override
    method determineCountsFromFile (line 147) | private void determineCountsFromFile(String file) throws IOException {
    method determineCountsFromInput (line 159) | private void determineCountsFromInput(String[] args) throws NumberForm...
    method run (line 165) | @Override

FILE: src/juicebox/tools/clt/old/PairsToBin.java
  class PairsToBin (line 33) | public class PairsToBin extends JuiceboxCLT {
    method PairsToBin (line 37) | public PairsToBin() {
    method readArguments (line 41) | @Override
    method run (line 51) | @Override

FILE: src/juicebox/tools/clt/old/Pearsons.java
  class Pearsons (line 54) | public class Pearsons extends JuiceboxCLT {
    method Pearsons (line 63) | public Pearsons() {
    method getBasicUsage (line 67) | public static String getBasicUsage(){
    method readPearsons (line 71) | public static BasicMatrix readPearsons(String path) throws IOException {
    method getVectorMean (line 102) | private static double getVectorMean(double[] vector) {
    method computePearsons (line 114) | public static BasicMatrix computePearsons(double[][] matrix, int dim, ...
    method computeParallelizedPearsons (line 164) | public static BasicMatrix computeParallelizedPearsons(double[][] matri...
    method inPlaceParallelSubtractRowMeans (line 211) | private static void inPlaceParallelSubtractRowMeans(double[][] matrix,...
    method readArguments (line 238) | @Override
    method run (line 283) | @Override
    method writeHeader (line 373) | private void writeHeader(LittleEndianOutputStream les, int dim, float ...

FILE: src/juicebox/tools/clt/old/PreProcessing.java
  class PreProcessing (line 44) | public class PreProcessing extends JuiceboxCLT {
    method PreProcessing (line 78) | public PreProcessing() {
    method getBasicUsage (line 82) | public static String getBasicUsage() {
    method readArguments (line 86) | @Override
    method run (line 167) | @Override

FILE: src/juicebox/tools/clt/old/SQLDatabase.java
  class SQLDatabase (line 34) | public class SQLDatabase extends JuiceboxCLT {
    method SQLDatabase (line 38) | public SQLDatabase() {
    method readArguments (line 42) | @Override
    method run (line 49) | @Override

FILE: src/juicebox/tools/clt/old/Statistics.java
  class Statistics (line 44) | public class Statistics extends JuiceboxCLT {
    method Statistics (line 55) | public Statistics() {
    method getUsage (line 59) | public static String getUsage() {
    method setMndIndex (line 73) | public void setMndIndex() {
    method readSiteFile (line 86) | private FragmentCalculation readSiteFile(String siteFile) {
    method readArguments (line 95) | @Override
    method tryToReadLocalHandler (line 140) | private void tryToReadLocalHandler(String genomeID) {
    method run (line 150) | @Override

FILE: src/juicebox/tools/clt/old/Summation.java
  class Summation (line 43) | public class Summation extends JuiceboxCLT {
    method Summation (line 50) | public Summation() {
    method getBasicUsage (line 54) | public static String getBasicUsage() {
    method readArguments (line 58) | @Override
    method run (line 115) | @Override
    method populateParameters (line 137) | private void populateParameters(String hicFile, String[] genomeId, Lis...
    method cleanUpGenome (line 152) | private String cleanUpGenome(String genomeId) {
    method getRemainingFiles (line 161) | private String getRemainingFiles(String[] args) {

FILE: src/juicebox/tools/clt/old/ValidateFile.java
  class ValidateFile (line 42) | public class ValidateFile extends JuiceboxCLT {
    method ValidateFile (line 46) | public ValidateFile() {
    method getUsage (line 50) | public static String getUsage() {
    method readArguments (line 54) | @Override
    method run (line 62) | @Override

FILE: src/juicebox/tools/dev/APAvsDistance.java
  class APAvsDistance (line 70) | public class APAvsDistance extends JuicerCLT  {
    method APAvsDistance (line 86) | public APAvsDistance() {
    method getBasicUsage (line 93) | public static String getBasicUsage() {
    method initializeDirectly (line 97) | public void initializeDirectly(String inputHiCFileName, String inputPe...
    method readJuicerArguments (line 108) | @Override
    method printResults (line 160) | private static void printResults(String[] windows, double[] results, S...
    method plotChart (line 175) | private static void plotChart(String SaveFolderPath, XYSeries results) {
    method run (line 210) | @Override

FILE: src/juicebox/tools/dev/ChromosomeCalculation.java
  class ChromosomeCalculation (line 41) | public class ChromosomeCalculation {
    method sum (line 43) | public static void sum(int resolution, int slidingWindow, String fileP...
    method slidingAverageAcrossData (line 98) | public static void slidingAverageAcrossData(int slidingWindow, Map<Chr...
    method writeDataToFile (line 119) | private static void writeDataToFile(Map<Chromosome, Map<Integer, Float...
    method sumColumn (line 145) | private static void sumColumn(MatrixZoomData zd,
    method calculateLogEnrichmentOfObservedOverExpected (line 191) | public static void calculateLogEnrichmentOfObservedOverExpected(Map<Ch...

FILE: src/juicebox/tools/dev/CompareVectors.java
  class CompareVectors (line 40) | public class CompareVectors extends JuiceboxCLT {
    method CompareVectors (line 47) | public CompareVectors() {
    method getUsage (line 51) | private static String getUsage() {
    method readArguments (line 55) | @Override
    method run (line 78) | @Override
    method fillInVector (line 103) | private void fillInVector(double[][] array, NormalizationVector nv, in...

FILE: src/juicebox/tools/dev/GeneFinder.java
  class GeneFinder (line 50) | public class GeneFinder extends JuicerCLT {
    method GeneFinder (line 55) | public GeneFinder() {
    method readJuicerArguments (line 59) | @Override
    method run (line 76) | @Override

FILE: src/juicebox/tools/dev/HiCArtMNDWriter.java
  class HiCArtMNDWriter (line 30) | class HiCArtMNDWriter {
    method main (line 32) | public static void main(String[] args) {
    method writeMergedNoDupsFromTimeSeq (line 36) | private static void writeMergedNoDupsFromTimeSeq(String seqPath, Strin...

FILE: src/juicebox/tools/dev/IntraChromTriple.java
  class IntraChromTriple (line 34) | public class IntraChromTriple extends Feature implements Comparable<Intr...
    method IntraChromTriple (line 38) | public IntraChromTriple(int chrIndex, int x1, int x2, int x3) {
    method IntraChromTriple (line 45) | private IntraChromTriple(int chrIndex, List<Integer> ints) {
    method parse (line 57) | public static IntraChromTriple parse(String line, ChromosomeHandler ha...
    method compareTo (line 80) | @Override
    method getKey (line 89) | @Override
    method toString (line 94) | @Override
    method deepClone (line 99) | @Override
    method getX1 (line 104) | public Integer getX1() {
    method getX2 (line 108) | public Integer getX2() {
    method getX3 (line 112) | public Integer getX3() {
    method toTripleCentroid (line 116) | public TripleCentroid toTripleCentroid() {

FILE: src/juicebox/tools/dev/MapSelectionPanel.java
  class MapSelectionPanel (line 43) | class MapSelectionPanel extends JPanel {
    method MapSelectionPanel (line 52) | private MapSelectionPanel(SuperAdapter superAdapter, Dataset reader, D...
    method launchMapSubsetGUI (line 77) | public static void launchMapSubsetGUI(SuperAdapter superAdapter) {
    method generateMapActivationPanel (line 97) | private JPanel generateMapActivationPanel(final SuperAdapter superAdap...
    method createPane (line 125) | private JPanel createPane(String description, List<JCheckBox> checkBox...

FILE: src/juicebox/tools/dev/ParallelizedJuicerTools.java
  class ParallelizedJuicerTools (line 30) | public class ParallelizedJuicerTools {
    method launchParallelizedCode (line 32) | public static void launchParallelizedCode(Runnable runnable) {
    method launchParallelizedCode (line 36) | public static void launchParallelizedCode(int numCPUThreads, Runnable ...

FILE: src/juicebox/tools/dev/Private.java
  class Private (line 32) | public class Private {
    method assessGenomeForRE (line 34) | public static boolean assessGenomeForRE(String genomeId) {
    method assessGenomeForRE2 (line 38) | public static boolean assessGenomeForRE2(String genomeId) {
    method reForDMEL (line 42) | public static String reForDMEL(int sites) {
    method assessGenomeForRE3 (line 47) | public static boolean assessGenomeForRE3(String genomeId) {
    method reForHG18 (line 51) | public static String reForHG18(int sites) {
    method reForHG19 (line 56) | public static String reForHG19(int sites) {
    method reForMM9 (line 80) | public static String reForMM9(int sites) {
    method assessGenomeForRE4 (line 86) | public static boolean assessGenomeForRE4(String genomeId) {
    method launchMapSubsetGUI (line 90) | public static void launchMapSubsetGUI(SuperAdapter superAdapter) {

FILE: src/juicebox/tools/dev/RandomUtils.java
  class RandomUtils (line 37) | class RandomUtils {
    method intersectLoopLists (line 58) | public static void intersectLoopLists(String genomeID, String[] fileNa...

FILE: src/juicebox/tools/dev/TripleCentroid.java
  class TripleCentroid (line 30) | public class TripleCentroid {
    method TripleCentroid (line 40) | public TripleCentroid(Integer chrIndex, Integer x1, Integer x2, Intege...
    method consumeDuplicate (line 50) | public void consumeDuplicate(IntraChromTriple triple) {
    method average (line 59) | private Integer average(Set<Integer> xs) {
    method hasOverlapWithTriple (line 67) | public boolean hasOverlapWithTriple(IntraChromTriple triple, int toler...
    method toIntraChromTriple (line 74) | public IntraChromTriple toIntraChromTriple() {

FILE: src/juicebox/tools/dev/TriplesAPA.java
  class TriplesAPA (line 40) | public class TriplesAPA extends JuicerCLT {
    method TriplesAPA (line 41) | public TriplesAPA() {
    method removeAnchorsThatAreTooCloseTogether (line 45) | private static void removeAnchorsThatAreTooCloseTogether(GenomeWideLis...
    method readInIntraChromTriple (line 61) | private static GenomeWideList<IntraChromTriple> readInIntraChromTriple...
    method readJuicerArguments (line 76) | @Override
    method run (line 81) | @Override
    method threeDimSearching (line 127) | private void threeDimSearching(GenomeWideList<IntraChromTriple> triple...
    method threeDimHandling (line 175) | private void threeDimHandling(GenomeWideList<IntraChromTriple> triples...
    method makeKey (line 241) | private String makeKey(int diff_1, int diff_2, int diff_3) {
    method dedupTriples (line 245) | private void dedupTriples(GenomeWideList<IntraChromTriple> anchors, fi...
    method translateAnchors (line 271) | private void translateAnchors(GenomeWideList<GenericLocus> anchors, fi...

FILE: src/juicebox/tools/utils/Benchmark.java
  class Benchmark (line 40) | public class Benchmark extends JuiceboxCLT {
    method Benchmark (line 47) | public Benchmark() {
    method getUsage (line 51) | private static String getUsage() {
    method readArguments (line 55) | @Override
    method run (line 76) | @Override

FILE: src/juicebox/tools/utils/common/ArrayTools.java
  class ArrayTools (line 37) | public class ArrayTools {
    method deepCopy (line 42) | public static float[][] deepCopy(float[][] original) {
    method mean (line 53) | public static double mean(double[] doubles) {
    method generatePoissonPMF (line 68) | public static double[] generatePoissonPMF(int index, int width) {
    method makeReverseCumulativeArray (line 82) | public static float[] makeReverseCumulativeArray(float[] inputArray) {
    method makeReverseCumulativeArray (line 92) | private static long[] makeReverseCumulativeArray(long[] inputArray) {
    method makeReverse2DCumulativeArray (line 102) | public static long[][] makeReverse2DCumulativeArray(long[][] data) {
    method newValueInitializedFloatArray (line 113) | public static float[] newValueInitializedFloatArray(int n, float val) {
    method scalarMulti
Condensed preview — 472 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,632K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 669,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"[BUG]\"\nlabels: bug\nassignees: ''\n\n---\n\n**Describe"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/custom.md",
    "chars": 126,
    "preview": "---\nname: Custom issue template\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: ''\nassignees: ''\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".gitignore",
    "chars": 99,
    "preview": "# Created by .gitignore support plugin (hsz.mobi)\n*.iml\n.idea/workspace.xml\n*.DS_Store\nout/\n.vscode"
  },
  {
    "path": ".idea/artifacts/Juicebox.xml",
    "chars": 2191,
    "preview": "<component name=\"ArtifactManager\">\n  <artifact type=\"jar\" build-on-make=\"true\" name=\"Juicebox\">\n    <output-path>$PROJEC"
  },
  {
    "path": ".idea/artifacts/JuicerTools.xml",
    "chars": 2837,
    "preview": "<component name=\"ArtifactManager\">\n  <artifact type=\"jar\" build-on-make=\"true\" name=\"JuicerTools\">\n    <output-path>$PRO"
  },
  {
    "path": ".idea/compiler.xml",
    "chars": 753,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"CompilerConfiguration\">\n    <wildcardRes"
  },
  {
    "path": ".idea/copyright/Juicebox.xml",
    "chars": 1568,
    "preview": "<component name=\"CopyrightManager\">\n  <copyright>\n    <option name=\"notice\" value=\"The MIT License (MIT)&#10;&#10;Copyri"
  },
  {
    "path": ".idea/copyright/profiles_settings.xml",
    "chars": 205,
    "preview": "<component name=\"CopyrightManager\">\n  <settings default=\"Juicebox\">\n    <module2copyright>\n      <element module=\"Juiceb"
  },
  {
    "path": ".idea/encodings.xml",
    "chars": 222,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Encoding\" useUTFGuessing=\"true\" native2A"
  },
  {
    "path": ".idea/jarRepositories.xml",
    "chars": 1169,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"RemoteRepositoriesConfiguration\">\n    <r"
  },
  {
    "path": ".idea/kotlinc.xml",
    "chars": 391,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Kotlin2JvmCompilerArguments\">\n    <optio"
  },
  {
    "path": ".idea/libraries/KotlinJavaRuntime.xml",
    "chars": 946,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"KotlinJavaRuntime\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/"
  },
  {
    "path": ".idea/libraries/broadinstitute.xml",
    "chars": 298,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"broadinstitute\">\n    <CLASSES>\n      <root url=\"file://$PROJECT_DIR$/li"
  },
  {
    "path": ".idea/libraries/general.xml",
    "chars": 277,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"general\">\n    <CLASSES>\n      <root url=\"file://$PROJECT_DIR$/lib/gener"
  },
  {
    "path": ".idea/libraries/jargs.xml",
    "chars": 208,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"jargs\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/lib/general/"
  },
  {
    "path": ".idea/libraries/jcuda.xml",
    "chars": 506,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"jcuda\">\n    <CLASSES>\n      <root url=\"file://$PROJECT_DIR$/lib/jcuda\" "
  },
  {
    "path": ".idea/libraries/jfreechart_1_0_19.xml",
    "chars": 232,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"jfreechart-1.0.19\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/"
  },
  {
    "path": ".idea/libraries/log4j_core_2_11_0.xml",
    "chars": 239,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"log4j-core-2.11.0\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/"
  },
  {
    "path": ".idea/libraries/npy.xml",
    "chars": 204,
    "preview": "<component name=\"libraryTable\">\n  <library name=\"npy\">\n    <CLASSES>\n      <root url=\"jar://$PROJECT_DIR$/lib/general/np"
  },
  {
    "path": ".idea/misc.xml",
    "chars": 353,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"IdProvider\" IDEtalkID=\"51DB6E1D1FAF5DDA5"
  },
  {
    "path": ".idea/modules.xml",
    "chars": 270,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n   "
  },
  {
    "path": ".idea/scopes/Juicebox_Source.xml",
    "chars": 130,
    "preview": "<component name=\"DependencyValidationManager\">\n  <scope name=\"Juicebox Source\" pattern=\"file:src/juicebox//*.java\" />\n</"
  },
  {
    "path": ".idea/scopes/scope_settings.xml",
    "chars": 139,
    "preview": "<component name=\"DependencyValidationManager\">\n  <state>\n    <option name=\"SKIP_IMPORT_STATEMENTS\" value=\"false\" />\n  </"
  },
  {
    "path": ".idea/uiDesigner.xml",
    "chars": 8794,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Palette2\">\n    <group name=\"Swing\">\n    "
  },
  {
    "path": ".idea/vcs.xml",
    "chars": 748,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"GithubSharedProjectSettings\">\n    <optio"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3348,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 3094,
    "preview": "# Contributing to Juicebox and/or Juicebox Assembly Tools\n\n:+1::tada: First off, thanks for taking the time to contribut"
  },
  {
    "path": "HiCFormatV8.md",
    "chars": 11635,
    "preview": "# hic file format \n\n## Structure\n\n* Header\n* Body\n    * Matrix\n    * Block\n* Footer\n    * Master index\n    * Expected va"
  },
  {
    "path": "Juicer.README",
    "chars": 21303,
    "preview": "# Juicer\nJuicer is a platform for analyzing kilobase resolution Hi-C data. In this distribution,\nwe include the pipeline"
  },
  {
    "path": "LICENSE",
    "chars": 1076,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Aiden Lab\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "README.md",
    "chars": 8110,
    "preview": "--------------\nBreaking News!\n--------------\nThis codebase is in the process of being split up to better support long-te"
  },
  {
    "path": "benchmark.sh",
    "chars": 3020,
    "preview": "#!/bin/bash\n\n### Benchmarks for DCIC\n### To run, get juicebox_tools.jar and the test data files:\n###   wget http://hicfi"
  },
  {
    "path": "build.xml",
    "chars": 20721,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ The MIT License (MIT)\n  ~\n  ~ Copyright (c) 2011-2020 Broad Institute, A"
  },
  {
    "path": "internalREADME.md",
    "chars": 7664,
    "preview": "--------------------\nQuick Start\n--------------------\n1. Run `package.sh <versionNum>`\nversionNum lives in src/juicebox/"
  },
  {
    "path": "juicebox.properties",
    "chars": 1405,
    "preview": "#\n# The MIT License (MIT)\n#\n# Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of Med"
  },
  {
    "path": "l4j/config.xml",
    "chars": 1891,
    "preview": "<!--\n  ~ The MIT License (MIT)\n  ~\n  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor Colle"
  },
  {
    "path": "l4j/config_bcm.xml",
    "chars": 1991,
    "preview": "<!--\n  ~ The MIT License (MIT)\n  ~\n  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor Colle"
  },
  {
    "path": "l4j/config_broad.xml",
    "chars": 2010,
    "preview": "<!--\n  ~ The MIT License (MIT)\n  ~\n  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor Colle"
  },
  {
    "path": "l4j/config_fix_for_Erez.xml",
    "chars": 2044,
    "preview": "<!--\n  ~ The MIT License (MIT)\n  ~\n  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor Colle"
  },
  {
    "path": "l4j/config_nosplash.xml",
    "chars": 1748,
    "preview": "<!--\n  ~ The MIT License (MIT)\n  ~\n  ~ Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor Colle"
  },
  {
    "path": "lib/general/VectorGraphics2D.LGPL.LICENSE",
    "chars": 7637,
    "preview": "\t\t   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software"
  },
  {
    "path": "lib/universalJavaApplicationStub",
    "chars": 30875,
    "preview": "#!/bin/bash\n##################################################################################\n#                        "
  },
  {
    "path": "package.sh",
    "chars": 6654,
    "preview": "## Internal script for compiling and packaging DMG and EXE\n## Compiles with appropriate properties file depending on if\n"
  },
  {
    "path": "src/images/manifest.mf",
    "chars": 82,
    "preview": "Manifest-Version: 1.0\nX-COMMENT: Main-Class will be added automatically by build\n\n"
  },
  {
    "path": "src/juicebox/CommandBroadcaster.java",
    "chars": 2853,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/CommandExecutor.java",
    "chars": 3434,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/CommandListener.java",
    "chars": 5034,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/Context.java",
    "chars": 2121,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/DirectoryManager.java",
    "chars": 8156,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/HiC.java",
    "chars": 52253,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/HiCGlobals.java",
    "chars": 5474,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2024 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/IGVUtils.java",
    "chars": 4283,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/MainWindow.java",
    "chars": 21569,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/ProcessHelper.java",
    "chars": 3043,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/Unused.java",
    "chars": 5171,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/AssemblyFileExporter.java",
    "chars": 4088,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/AssemblyFileImporter.java",
    "chars": 13287,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/AssemblyHeatmapHandler.java",
    "chars": 5148,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/AssemblyOperationExecutor.java",
    "chars": 5750,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/AssemblyScaffoldHandler.java",
    "chars": 37554,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/AssemblyStateTracker.java",
    "chars": 4862,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/IGVFeatureCopy.java",
    "chars": 5288,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/OneDimAssemblyTrackLifter.java",
    "chars": 14120,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/assembly/PsfFileExporter.java",
    "chars": 3612,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/assembly/PsfFileImporter.java",
    "chars": 6400,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/assembly/Scaffold.java",
    "chars": 9288,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/AbstractDatasetReader.java",
    "chars": 4314,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2022 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/BinReader.java",
    "chars": 5781,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/Block.java",
    "chars": 2922,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/BlockIndex.java",
    "chars": 2481,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/ChromosomeHandler.java",
    "chars": 18869,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/CombinedDatasetReader.java",
    "chars": 23863,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2023 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/CombinedExpectedValueFunction.java",
    "chars": 4019,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/ContactRecord.java",
    "chars": 2987,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/CustomMatrixZoomData.java",
    "chars": 16380,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/Dataset.java",
    "chars": 41313,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2023 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/DatasetReader.java",
    "chars": 2891,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2022 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/DatasetReaderFactory.java",
    "chars": 4061,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/DatasetReaderV2.java",
    "chars": 41801,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2022 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/DynamicBlock.java",
    "chars": 1795,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/DynamicBlockIndex.java",
    "chars": 6200,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/DynamicMatrixZoomData.java",
    "chars": 5081,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/ExpectedValueFunction.java",
    "chars": 1771,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/ExpectedValueFunctionImpl.java",
    "chars": 6859,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/GeneLocation.java",
    "chars": 1699,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/HiCFileLoader.java",
    "chars": 8134,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/HiCFileTools.java",
    "chars": 18293,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/Matrix.java",
    "chars": 15862,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/MatrixZoomData.java",
    "chars": 76617,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/NormFactorMapReader.java",
    "chars": 2255,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/NormalizationVector.java",
    "chars": 3913,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/ZoomAction.java",
    "chars": 3374,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/ZoomActionTracker.java",
    "chars": 3426,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/anchor/BEDTools.java",
    "chars": 11971,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/data/anchor/GenericLocus.java",
    "chars": 8198,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/data/anchor/GenericLocusParser.java",
    "chars": 4184,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/data/anchor/GenericLocusTools.java",
    "chars": 9719,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/data/anchor/MotifAnchor.java",
    "chars": 7582,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/data/anchor/MotifAnchorParser.java",
    "chars": 14946,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/anchor/MotifAnchorTools.java",
    "chars": 18064,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab\n *\n * Permission is hereby granted,"
  },
  {
    "path": "src/juicebox/data/basics/Chromosome.java",
    "chars": 2322,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/basics/ListOfDoubleArrays.java",
    "chars": 5660,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/basics/ListOfFloatArrays.java",
    "chars": 7092,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/basics/ListOfIntArrays.java",
    "chars": 4516,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/binary_file_layout.txt",
    "chars": 1261,
    "preview": "------\nHeader\n------\n\n  masterIndexPointer\n\n\n  --------\n  Chr dictionary\n  --------\n  numberOfChromosomes\n\n     --------"
  },
  {
    "path": "src/juicebox/data/censoring/CustomMZDRegionHandler.java",
    "chars": 6435,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/censoring/OneDimSearchUtils.java",
    "chars": 3294,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/censoring/OneDimTrackCensoring.java",
    "chars": 6172,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/censoring/RegionPair.java",
    "chars": 3635,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/feature/Feature.java",
    "chars": 1416,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/feature/FeatureFilter.java",
    "chars": 1417,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/feature/FeatureFunction.java",
    "chars": 1417,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/feature/GenomeWideList.java",
    "chars": 6873,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/BigContactRecordList.java",
    "chars": 4272,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ContactRecordIterator.java",
    "chars": 4122,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/CoupledIteratorAndOffset.java",
    "chars": 2050,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/GWIteratorContainer.java",
    "chars": 3954,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/GenomeWideIterator.java",
    "chars": 5173,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/IteratorContainer.java",
    "chars": 3378,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ListIteratorContainer.java",
    "chars": 3994,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ListOfListGenerator.java",
    "chars": 4884,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ListOfListIterator.java",
    "chars": 2364,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ListOfListIteratorContainer.java",
    "chars": 4191,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ParallelizedListOperations.java",
    "chars": 1608,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/iterator/ZDIteratorContainer.java",
    "chars": 2966,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/v9depth/ConstantDepth.java",
    "chars": 1525,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/v9depth/LogDepth.java",
    "chars": 1521,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/data/v9depth/V9Depth.java",
    "chars": 1965,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/encode/EncodeFileBrowser.java",
    "chars": 16308,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/encode/EncodeFileRecord.java",
    "chars": 3959,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/encode/EncodeTableModel.java",
    "chars": 4558,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/encode/UCSCEncodeUtils.java",
    "chars": 8841,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/encode/encode.hg18.txt",
    "chars": 164486,
    "preview": "path\tcell\tdataType\tantibody\tview\treplicate\ttype\tlab\nhttp://hgdownload.cse.ucsc.edu/goldenPath/hg18/encodeDCC/wgEncodeBro"
  },
  {
    "path": "src/juicebox/encode/encode.hg19.txt",
    "chars": 3867782,
    "preview": "path\tcell\tdataType\tantibody\tview\treplicate\ttype\tlab\thub\nhttp://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncod"
  },
  {
    "path": "src/juicebox/encode/encode.hic.txt",
    "chars": 50582,
    "preview": "path\tcell\tdataType\tantibody\tview\treplicate\ttype\tlab\thub\nhttp://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncod"
  },
  {
    "path": "src/juicebox/encode/encode.mm9.txt",
    "chars": 576657,
    "preview": "path\tcell\tdataType\tantibody\tview\treplicate\ttype\tlab\nhttp://hgdownload.cse.ucsc.edu/goldenPath/mm9/encodeDCC/wgEncodeCalt"
  },
  {
    "path": "src/juicebox/encode/rnaChip.txt",
    "chars": 1952,
    "preview": "antibodyAliases.put(\"Gm12878CellTotal\",\t \"Gm12878CellTotal\");\nantibodyAliases.put(\"Gm12878CytosolLongnonpolya\",\t \"Gm1287"
  },
  {
    "path": "src/juicebox/gui/BoundsPopupMenuListener.java",
    "chars": 12603,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/gui/MainMenuBar.java",
    "chars": 34187,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/gui/MainViewPanel.java",
    "chars": 41382,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/gui/PseudoCountEditor.java",
    "chars": 3449,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/gui/SuperAdapter.java",
    "chars": 42985,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/BoundingBoxRenderer.java",
    "chars": 6133,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/ColorRangeDialog.java",
    "chars": 10201,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/ColorScaleHandler.java",
    "chars": 7892,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/CursorRenderer.java",
    "chars": 4585,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/Feature2DHandler.java",
    "chars": 14651,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/FeatureRenderer.java",
    "chars": 7401,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/GeneralTileManager.java",
    "chars": 10192,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/HeatmapClickListener.java",
    "chars": 11386,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/HeatmapMouseHandler.java",
    "chars": 99533,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2022 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/HeatmapPanel.java",
    "chars": 15819,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/HeatmapRenderer.java",
    "chars": 65986,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/HiCMapTileManager.java",
    "chars": 5057,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/JColorRangePanel.java",
    "chars": 16834,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/OEColorScale.java",
    "chars": 4887,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/PearsonColorScale.java",
    "chars": 4152,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/PearsonColorScaleEditor.java",
    "chars": 5393,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/RangeSlider.java",
    "chars": 4155,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/RangeSliderUI.java",
    "chars": 23538,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/ResolutionControl.java",
    "chars": 15327,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/mapcolorui/ThumbnailPanel.java",
    "chars": 7442,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/BasicMatrix.java",
    "chars": 1554,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/DiskResidentBlockMatrix.java",
    "chars": 8501,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/InMemoryMatrix.java",
    "chars": 3336,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/RealMatrixWrapper.java",
    "chars": 3268,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/SparseSymmetricMatrix.java",
    "chars": 6574,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/SparseVector.java",
    "chars": 2318,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/matrix/SymmetricMatrix.java",
    "chars": 4320,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/ImportStateFileDialog.java",
    "chars": 4877,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/LoadStateFromXMLFile.java",
    "chars": 12227,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/SaveFileDialog.java",
    "chars": 3428,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/Slideshow.java",
    "chars": 7752,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/State.java",
    "chars": 2834,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/XMLFileHandling.java",
    "chars": 5816,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2021 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/XMLFileParser.java",
    "chars": 4030,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/state/XMLFileWriter.java",
    "chars": 5053,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/tools/HiCTools.java",
    "chars": 3798,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2022 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/ChromosomeSizes.java",
    "chars": 1346,
    "preview": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011-2020 Broad Institute, Aiden Lab, Rice University, Baylor College of"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/EBV.chrom.sizes",
    "chars": 17,
    "preview": "NC_007605\t171824\n"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/GRCm38.chrom.sizes",
    "chars": 331,
    "preview": "chr1\t195471971\nchr2\t182113224\nchr3\t160039680\nchr4\t156508116\nchr5\t151834684\nchr6\t149736546\nchr7\t145441459\nchr8\t129401213\n"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/Pf3D7.chrom.sizes",
    "chars": 290,
    "preview": "M76611\t5967\nPf3D7_01_v3\t640851\nPf3D7_02_v3\t947102\nPf3D7_03_v3\t1067971\nPf3D7_04_v3\t1200490\nPf3D7_05_v3\t1343557\nPf3D7_06_v"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/TAIR10.chrom.sizes",
    "chars": 266,
    "preview": "gi|240254421|ref|NC_003070.9|\t30427671\ngi|240254678|ref|NC_003071.7|\t19698289\ngi|240255695|ref|NC_003074.8|\t23459830\ngi|"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/aedAeg1.chrom.sizes",
    "chars": 541,
    "preview": "supercont1.1\t5856339\nsupercont1.2\t5729030\nsupercont1.4\t5177111\nsupercont1.3\t5167134\nsupercont1.6\t5075626\nsupercont1.5\t50"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/anasPlat1.chrom.sizes",
    "chars": 380,
    "preview": "KB742833.1\t5998093\nKB742808.1\t5763044\nKB742479.1\t5108439\nKB742929.1\t5090982\nKB742471.1\t4921412\nKB742432.1\t4403347\nKB7426"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/assembly.chrom.sizes",
    "chars": 20,
    "preview": "assembly\t2147000000\n"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/b37.chrom.sizes",
    "chars": 302,
    "preview": "1\t249250621\n2\t243199373\n3\t198022430\n4\t191154276\n5\t180915260\n6\t171115067\n7\t159138663\n8\t146364022\n9\t141213431\n10\t135534747"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/bTaurus3.chrom.sizes",
    "chars": 362,
    "preview": "1\t158337067\n2\t137060424\n3\t121430405\n4\t120829699\n5\t121191424\n6\t119458736\n7\t112638659\n8\t113384836\n9\t105708250\n10\t104305016"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/calJac3.chrom.sizes",
    "chars": 494,
    "preview": "CM000856.1\t210400635\nCM000857.1\t204313951\nCM000858.1\t190850796\nCM000859.1\t171630274\nCM000860.1\t159171411\nCM000861.1\t1584"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/canFam3.chrom.sizes",
    "chars": 577,
    "preview": "chr1\t122678785\nchr2\t85426708\nchr3\t91889043\nchr4\t88276631\nchr5\t88915250\nchr6\t77573801\nchr7\t80974532\nchr8\t74330416\nchr9\t61"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/capHir1.chrom.sizes",
    "chars": 609,
    "preview": "CM001710.1\t155011307\nCM001711.1\t135415751\nCM001712.1\t116796116\nCM001713.1\t115961478\nCM001714.1\t111055201\nCM001715.1\t1143"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/ce10.chrom.sizes",
    "chars": 99,
    "preview": "chrI\t15072423\nchrII\t15279345\nchrIII\t13783700\nchrIV\t17493793\nchrV\t20924149\nchrX\t17718866\nchrM\t13794\n"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/dMel.chrom.sizes",
    "chars": 93,
    "preview": "arm_2L\t23011544\narm_2R\t21146708\narm_3L\t24543557\narm_3R\t27905053\narm_4\t1351858\narm_X\t22422827\n"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/dm3.chrom.sizes",
    "chars": 228,
    "preview": "chr2L\t23011544\nchr2LHet\t368872\nchr2R\t21146708\nchr2RHet\t3288761\nchr3L\t24543557\nchr3LHet\t2555491\nchr3R\t27905053\nchr3RHet\t2"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/dm6.chrom.sizes",
    "chars": 110,
    "preview": "chr2L\t23513712\nchr2R\t25286936\nchr3L\t28110227\nchr3R\t32079331\nchr4\t1348131\nchrX\t23542271\nchrY\t3667352\nchrM\t19524"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/equCab2.chrom.sizes",
    "chars": 486,
    "preview": "chr1\t185838109\nchr2\t120857687\nchr3\t119479920\nchr4\t108569075\nchr5\t99680356\nchr6\t84719076\nchr7\t98542428\nchr8\t94057673\nchr9"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/felCat8.chrom.sizes",
    "chars": 391,
    "preview": "CM001378.2\t240380223\nCM001379.2\t168638799\nCM001380.2\t140925898\nCM001381.2\t206538554\nCM001382.2\t152998503\nCM001383.2\t1480"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/galGal4.chrom.sizes",
    "chars": 452,
    "preview": "chr1\t195276750\nchr2\t148809762\nchr3\t110447801\nchr4\t90216835\nchr5\t59580361\nchr6\t34951654\nchr7\t36245040\nchr8\t28767244\nchr9\t"
  },
  {
    "path": "src/juicebox/tools/chrom/sizes/hg18.chrom.sizes",
    "chars": 302,
    "preview": "1\t247249719\n2\t242951149\n3\t199501827\n4\t191273063\n5\t180857866\n6\t170899992\n7\t158821424\n8\t146274826\n9\t140273252\n10\t135374737"
  }
]

// ... and 272 more files (download for full content)

About this extraction

This page contains the full source code of the aidenlab/Juicebox GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 472 files (91.9 MB), approximately 2.1M tokens, and a symbol index with 4078 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!