From b9ff7df25a28c6835dc8dd07efab38523dcbc6b4 Mon Sep 17 00:00:00 2001 From: jrobinso <933148+jrobinso@users.noreply.github.com> Date: Thu, 17 Oct 2024 22:08:09 -0700 Subject: [PATCH] Cleanup --- .../org/broad/igv/feature/genome/Genome.java | 18 +++++--------- .../feature/genome/GenomeDownloadUtils.java | 3 +-- .../feature/genome/load/ChromsizesLoader.java | 7 +++--- .../igv/feature/genome/load/GenomeLoader.java | 10 +------- .../genome/load/GenomeObjectLoader.java | 24 ------------------- .../feature/genome/load/HubGenomeLoader.java | 3 +++ .../feature/genome/load/JsonGenomeLoader.java | 6 +---- .../java/org/broad/igv/ui/IGVMenuBar.java | 14 +++++------ .../igv/ui/commandbar/GenomeComboBox.java | 2 +- ....java => HostedGenomeSelectionDialog.java} | 15 ++++++------ 10 files changed, 30 insertions(+), 72 deletions(-) delete mode 100644 src/main/java/org/broad/igv/feature/genome/load/GenomeObjectLoader.java rename src/main/java/org/broad/igv/ui/commandbar/{GenomeSelectionDialog.java => HostedGenomeSelectionDialog.java} (94%) diff --git a/src/main/java/org/broad/igv/feature/genome/Genome.java b/src/main/java/org/broad/igv/feature/genome/Genome.java index 046a49aa23..adb23446d2 100644 --- a/src/main/java/org/broad/igv/feature/genome/Genome.java +++ b/src/main/java/org/broad/igv/feature/genome/Genome.java @@ -72,6 +72,8 @@ public class Genome { private static final int MAX_WHOLE_GENOME_LONG = 100; private static Logger log = LogManager.getLogger(Genome.class); + + GenomeConfig config; private String id; private String displayName; private List chromosomeNames; @@ -94,7 +96,6 @@ public class Genome { private String homeChromosome; private String defaultPos; private String nameSet; - private Hub hub; public Genome(GenomeConfig config) throws IOException { @@ -152,8 +153,8 @@ public Genome(GenomeConfig config) throws IOException { } } - // If list of chromosomes is specified use it for the whole genome view, and to prepopulate the - // ordered list of chromosomes. + // If ordered list of chromosome names is specified, use it for the whole genome view, and to prepopulate the + // ordered list of chromosome names. this.chromosomeNames = new ArrayList<>(); Set ordered = new HashSet<>(); if (config.getChromosomeOrder() != null) { @@ -162,7 +163,7 @@ public Genome(GenomeConfig config) throws IOException { ordered.addAll(this.longChromosomeNames); } - // If we have chromosome information pre-populate the chromosome cache. + // If we have chromosome length information pre-populate the chromosome cache. this.chromosomeMap = new HashMap<>(); if (chromosomeList != null) { for (Chromosome c : chromosomeList) { @@ -189,7 +190,6 @@ public Genome(GenomeConfig config) throws IOException { chromosomeList.size() > 1 && longChromosomeNames.size() <= MAX_WHOLE_GENOME_LONG; - // Cytobands if (config.getCytobands() != null) { cytobandSource = new CytobandMap(config.getCytobands()); // Directly supplied, from .genome file @@ -199,7 +199,6 @@ public Genome(GenomeConfig config) throws IOException { cytobandSource = new CytobandMap(config.getCytobandURL()); } - // Chromosome aliases if (config.getAliasURL() != null) { chromAliasSource = (new ChromAliasFile(config.getAliasURL(), chromosomeNames)); @@ -215,7 +214,6 @@ public Genome(GenomeConfig config) throws IOException { addChrAliases(config.getChromAliases()); } - // Set the default position. if (showWholeGenomeView) { homeChromosome = Globals.CHR_ALL; @@ -263,10 +261,7 @@ private void addTracks(GenomeConfig config) { ArrayList tracks = new ArrayList<>(); ArrayList hiddenTracks = new ArrayList<>(); - List trackConfigs = config.getTracks(); - if (trackConfigs == null) { - trackConfigs = config.getAnnotations(); - } + List trackConfigs = config.getTrackConfigs(); if (trackConfigs != null) { @@ -415,7 +410,6 @@ public String getDefaultPos() { return defaultPos == null ? homeChromosome : defaultPos; } - public Chromosome getChromosome(String name) { String chrName = getCanonicalChrName(name); if (chromosomeMap.containsKey(chrName)) { diff --git a/src/main/java/org/broad/igv/feature/genome/GenomeDownloadUtils.java b/src/main/java/org/broad/igv/feature/genome/GenomeDownloadUtils.java index 4086a210e1..eb859974df 100644 --- a/src/main/java/org/broad/igv/feature/genome/GenomeDownloadUtils.java +++ b/src/main/java/org/broad/igv/feature/genome/GenomeDownloadUtils.java @@ -118,8 +118,7 @@ public static File downloadGenome(GenomeConfig config, boolean downloadSequence, config.setAliasURL(relativeDataDirectory + localFile.getName()); } - List trackConfigs = config.getTracks(); - if (trackConfigs == null) trackConfigs = config.getAnnotations(); // alias + List trackConfigs = config.getTrackConfigs(); if (trackConfigs != null) { for (TrackConfig trackConfig : trackConfigs) { diff --git a/src/main/java/org/broad/igv/feature/genome/load/ChromsizesLoader.java b/src/main/java/org/broad/igv/feature/genome/load/ChromsizesLoader.java index 445e555656..6f0a473444 100644 --- a/src/main/java/org/broad/igv/feature/genome/load/ChromsizesLoader.java +++ b/src/main/java/org/broad/igv/feature/genome/load/ChromsizesLoader.java @@ -15,15 +15,14 @@ public ChromsizesLoader(String genomePath) { } /** - * Define a minimal genome from a chrom.sizes file. It is assumed (required) that the file follow the - * UCSC naming convention => [id].chrom.sizes + * Define a minimal genome from a chrom.sizes file. + * * @return * @throws IOException */ @Override public Genome loadGenome() throws IOException { - int firstPeriodIdx = genomePath.indexOf('.'); - String genomeId = genomePath.substring(0, firstPeriodIdx); + String genomeId = genomePath; List chromosomes = ChromSizesParser.parse(genomePath); Genome newGenome = new Genome(genomeId, chromosomes); return newGenome; diff --git a/src/main/java/org/broad/igv/feature/genome/load/GenomeLoader.java b/src/main/java/org/broad/igv/feature/genome/load/GenomeLoader.java index 45762cd088..791a1298ec 100644 --- a/src/main/java/org/broad/igv/feature/genome/load/GenomeLoader.java +++ b/src/main/java/org/broad/igv/feature/genome/load/GenomeLoader.java @@ -49,14 +49,6 @@ public static GenomeLoader getLoader(String genomePath) throws IOException { return new ChromsizesLoader(genomePath); } else if (genomePath.endsWith(".json")) { return new JsonGenomeLoader(genomePath); - } else if (genomePath.endsWith(".2bit")) { - GenomeConfig config = new GenomeConfig(); - config.setTwoBitURL(genomePath); - config.setId(genomePath); - config.setName((HttpUtils.isRemoteURL(genomePath)) ? - Utilities.getFileNameFromURL(genomePath) : - (new File(genomePath)).getName()); - return new GenomeObjectLoader(config); } else if (genomePath.endsWith("hub.txt")) { return new HubGenomeLoader(genomePath); } else { @@ -65,7 +57,7 @@ public static GenomeLoader getLoader(String genomePath) throws IOException { String gziPath = genomePath + ".gzi"; String faiPath = genomePath + ".fai"; if (!(FileUtils.resourceExists(gziPath) && FileUtils.resourceExists(faiPath))) { - throw new GenomeException("IGV cannot readed gzipped fasta files."); + throw new GenomeException("IGV cannot read gzipped fasta files."); } } return new FastaGenomeLoader(genomePath); diff --git a/src/main/java/org/broad/igv/feature/genome/load/GenomeObjectLoader.java b/src/main/java/org/broad/igv/feature/genome/load/GenomeObjectLoader.java deleted file mode 100644 index 40c7e8ccba..0000000000 --- a/src/main/java/org/broad/igv/feature/genome/load/GenomeObjectLoader.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.broad.igv.feature.genome.load; - -import org.broad.igv.feature.genome.Genome; -import org.broad.igv.logging.LogManager; -import org.broad.igv.logging.Logger; - -import java.io.IOException; - -public class GenomeObjectLoader extends GenomeLoader { - - private static Logger log = LogManager.getLogger(GenomeObjectLoader.class); - - private GenomeConfig genomeConfig; - - public GenomeObjectLoader(GenomeConfig genomeConfig) throws IOException { - this.genomeConfig = genomeConfig; - } - - @Override - public Genome loadGenome() throws IOException { - return new Genome(genomeConfig); - } - -} diff --git a/src/main/java/org/broad/igv/feature/genome/load/HubGenomeLoader.java b/src/main/java/org/broad/igv/feature/genome/load/HubGenomeLoader.java index a49bc69ab2..467d63af30 100644 --- a/src/main/java/org/broad/igv/feature/genome/load/HubGenomeLoader.java +++ b/src/main/java/org/broad/igv/feature/genome/load/HubGenomeLoader.java @@ -11,6 +11,9 @@ import java.io.IOException; import java.util.*; +/** + * Loads a "genome" from a UCSC track hub + */ public class HubGenomeLoader extends GenomeLoader { String hubURL; diff --git a/src/main/java/org/broad/igv/feature/genome/load/JsonGenomeLoader.java b/src/main/java/org/broad/igv/feature/genome/load/JsonGenomeLoader.java index 979b99dcc2..bd7683d78f 100644 --- a/src/main/java/org/broad/igv/feature/genome/load/JsonGenomeLoader.java +++ b/src/main/java/org/broad/igv/feature/genome/load/JsonGenomeLoader.java @@ -43,7 +43,6 @@ public Genome loadGenome() throws IOException { // Load liftover "chain" files. This enables navigating by coordinates of another genome. // Not a common option. - // JsonElement chains = config.chains; // if (chains != null) { // Map liftoverMap = new HashMap<>(); @@ -143,10 +142,7 @@ private GenomeConfig fixPaths(GenomeConfig config) { if (config.getChromAliasBbURL() != null) { config.setChromAliasBbURL(FileUtils.getAbsolutePath(config.getChromAliasBbURL(), genomePath)); } - List trackConfigs = config.getTracks(); - if (trackConfigs == null) { - trackConfigs = config.getAnnotations(); - } + List trackConfigs = config.getTrackConfigs(); if (trackConfigs != null) { trackConfigs.forEach((TrackConfig trackConfig) -> { if (trackConfig.getUrl() != null) { diff --git a/src/main/java/org/broad/igv/ui/IGVMenuBar.java b/src/main/java/org/broad/igv/ui/IGVMenuBar.java index 231b4ce5a3..3419907c71 100644 --- a/src/main/java/org/broad/igv/ui/IGVMenuBar.java +++ b/src/main/java/org/broad/igv/ui/IGVMenuBar.java @@ -36,11 +36,12 @@ import org.broad.igv.event.IGVEventBus; import org.broad.igv.event.IGVEventObserver; import org.broad.igv.feature.genome.Genome; +import org.broad.igv.feature.genome.GenomeDownloadUtils; import org.broad.igv.feature.genome.GenomeManager; import org.broad.igv.feature.genome.ChromSizesUtils; import org.broad.igv.track.AttributeManager; import org.broad.igv.track.Track; -import org.broad.igv.ui.commandbar.GenomeSelectionDialog; +import org.broad.igv.ui.commandbar.HostedGenomeSelectionDialog; import org.broad.igv.util.GoogleUtils; import org.broad.igv.oauth.OAuthProvider; import org.broad.igv.oauth.OAuthUtils; @@ -428,13 +429,13 @@ private void addEncodeItems(List menuItems, String genomeId) { JMenuItem otherSignalsItem = new JMenuItem(); otherSignalsItem.setAction(new BrowseEncodeAction("Other - Signals", 0, BrowseEncodeAction.Type.SIGNALS_OTHER, igv)); - encodeMenuItems.add(otherSignalsItem); + encodeMenuItems.add(otherSignalsItem); JMenuItem otherItem = new JMenuItem(); otherItem.setAction(new BrowseEncodeAction("Other (peaks, calls, ...)", 0, BrowseEncodeAction.Type.OTHER, igv)); encodeMenuItems.add(otherItem); - for(JComponent item : encodeMenuItems) { + for (JComponent item : encodeMenuItems) { menuItems.add(item); item.setVisible(EncodeTrackChooser.genomeSupported(genomeId)); } @@ -451,7 +452,7 @@ private JMenu createGenomesMenu() { JMenu menu = new JMenu("Genomes"); loadGenomeFromServerMenuItem = new JMenuItem("Select Hosted Genome..."); - loadGenomeFromServerMenuItem.addActionListener(e -> GenomeSelectionDialog.selectHostedGenome()); + loadGenomeFromServerMenuItem.addActionListener(e -> HostedGenomeSelectionDialog.selectHostedGenome()); loadGenomeFromServerMenuItem.setToolTipText(LOAD_GENOME_SERVER_TOOLTIP); menu.add(loadGenomeFromServerMenuItem); @@ -469,7 +470,7 @@ private JMenu createGenomesMenu() { // If a file selection was made if (file != null) { - Genome newGenome = GenomeManager.getInstance().loadGenome(file.getAbsolutePath()); + GenomeManager.getInstance().loadGenome(file.getAbsolutePath()); } } catch (Exception ex) { MessageUtils.showErrorMessage(ex.getMessage(), ex); @@ -1210,7 +1211,7 @@ public void receiveEvent(final IGVEvent event) { final Genome genome = ((GenomeChangeEvent) event).genome(); final String genomeId = genome.getId(); encodeUCSCMenuItem.setVisible(EncodeTrackChooser.genomeSupportedUCSC(genomeId)); - for(JComponent item : encodeMenuItems) { + for (JComponent item : encodeMenuItems) { item.setVisible(EncodeTrackChooser.genomeSupported(genomeId)); } @@ -1300,5 +1301,4 @@ public Foo() { } - } diff --git a/src/main/java/org/broad/igv/ui/commandbar/GenomeComboBox.java b/src/main/java/org/broad/igv/ui/commandbar/GenomeComboBox.java index 3844144fc9..687eee0a18 100644 --- a/src/main/java/org/broad/igv/ui/commandbar/GenomeComboBox.java +++ b/src/main/java/org/broad/igv/ui/commandbar/GenomeComboBox.java @@ -96,7 +96,7 @@ public void actionPerformed(ActionEvent actionEvent) { if (genomeListItem != null && genomeListItem.getPath() != null) { if (genomeListItem == GenomeListItem.DOWNLOAD_ITEM) { - GenomeSelectionDialog.selectHostedGenome(); + HostedGenomeSelectionDialog.selectHostedGenome(); } else { try { diff --git a/src/main/java/org/broad/igv/ui/commandbar/GenomeSelectionDialog.java b/src/main/java/org/broad/igv/ui/commandbar/HostedGenomeSelectionDialog.java similarity index 94% rename from src/main/java/org/broad/igv/ui/commandbar/GenomeSelectionDialog.java rename to src/main/java/org/broad/igv/ui/commandbar/HostedGenomeSelectionDialog.java index 53fcaeec60..b23098b92c 100644 --- a/src/main/java/org/broad/igv/ui/commandbar/GenomeSelectionDialog.java +++ b/src/main/java/org/broad/igv/ui/commandbar/HostedGenomeSelectionDialog.java @@ -58,9 +58,9 @@ * Dialog box for selecting genomes. User can choose from a list, * which is filtered according to text box input */ -public class GenomeSelectionDialog extends org.broad.igv.ui.IGVDialog { +public class HostedGenomeSelectionDialog extends org.broad.igv.ui.IGVDialog { - private static Logger log = LogManager.getLogger(GenomeSelectionDialog.class); + private static Logger log = LogManager.getLogger(HostedGenomeSelectionDialog.class); private JTextField genomeFilter; private JList genomeList; @@ -83,7 +83,7 @@ public static void selectHostedGenome() { if (inputListItems == null) { return; } - GenomeSelectionDialog dialog = new GenomeSelectionDialog(IGV.getInstance().getMainFrame(), inputListItems); + HostedGenomeSelectionDialog dialog = new HostedGenomeSelectionDialog(IGV.getInstance().getMainFrame(), inputListItems); UIUtilities.invokeAndWaitOnEventThread(() -> dialog.setVisible(true)); if (dialog.isCanceled()) { @@ -137,11 +137,10 @@ private static void removeDotGenomeFile(String id) { /** * @param parent */ - private GenomeSelectionDialog(java.awt.Frame parent, Collection inputListItems) { + private HostedGenomeSelectionDialog(java.awt.Frame parent, Collection inputListItems) { super(parent); initComponents(); initData(inputListItems); - downloadSequenceCB.setVisible(true); } private void initData(Collection inputListItems) { @@ -272,9 +271,9 @@ public void keyReleased(KeyEvent e) { genomeList = new JList(); genomeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); genomeList.addListSelectionListener(e -> { - List items = genomeList.getSelectedValuesList(); - downloadSequenceCB.setEnabled(items != null && items.stream().allMatch(item -> GenomeDownloadUtils.isSequenceDownloadable(item))); - downloadAnnotationsCB.setEnabled(items != null && items.stream().allMatch(item -> GenomeDownloadUtils.isAnnotationsDownloadable(item))); + GenomeListItem item = genomeList.getSelectedValue(); + downloadSequenceCB.setEnabled(item != null && GenomeDownloadUtils.isSequenceDownloadable(item)); + downloadAnnotationsCB.setEnabled(item != null && GenomeDownloadUtils.isAnnotationsDownloadable(item)); }); JScrollPane scrollPane1 = new JScrollPane();