diff --git a/src/main/java/org/igv/batch/CommandExecutor.java b/src/main/java/org/igv/batch/CommandExecutor.java old mode 100755 new mode 100644 index 631509e046..b368e633df --- a/src/main/java/org/igv/batch/CommandExecutor.java +++ b/src/main/java/org/igv/batch/CommandExecutor.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.batch; diff --git a/src/main/java/org/igv/bedpe/ContactMapView.java b/src/main/java/org/igv/bedpe/ContactMapView.java new file mode 100644 index 0000000000..cf6497c201 --- /dev/null +++ b/src/main/java/org/igv/bedpe/ContactMapView.java @@ -0,0 +1,780 @@ +package org.igv.bedpe; + +import org.igv.Globals; +import org.igv.event.IGVEvent; +import org.igv.event.IGVEventBus; +import org.igv.event.IGVEventObserver; +import org.igv.event.ViewChange; +import org.igv.hic.ContactRecord; +import org.igv.hic.HicFile; +import org.igv.hic.Region; +import org.igv.renderer.ContinuousColorScale; +import org.igv.ui.panel.ReferenceFrame; +import org.igv.ui.panel.RulerPanel; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.stream.Collectors; + +public class ContactMapView extends JPanel implements IGVEventObserver { + + private InteractionTrack track; + private HicFile hicFile; + private String normalization; + private Color color; + private Map colorScaleCache = new HashMap<>(); // Key: "normalization_binSize" + private Map colorScaleDataKeys = new HashMap<>(); // Tracks which data cache key was used for each color scale + private ReferenceFrame frame; // Current genomic region frame (dynamic) + private int binSize; // Bin size for the current genomic region (dynamic) + private int startBin; // Start bin for the current genomic region (dynamic) + private int nBins; // Number of map bins for the current genomic region (dynamic) + private RulerPanel rulerPanel; // Reference to ruler panel for synchronized updates + private JTextField maxField; + private JSlider maxSlider; + private double sliderMinValue = 0; + private double sliderMaxValue = 100; + + // Cached data for rendering + private volatile List cachedRecords; + private volatile boolean isLoading = false; + private volatile String loadingError = null; + + // Background executor for data fetching + private final ExecutorService dataFetchExecutor = Executors.newSingleThreadExecutor(); + private Future currentFetchTask; + + // Cache key to detect when data needs to be refetched + private volatile String dataCacheKey = null; + + public ContactMapView(InteractionTrack track, HicFile hicFile, String normalization, ReferenceFrame frame, Color color) { + + this.track = track; + this.hicFile = hicFile; + this.normalization = normalization; + this.frame = frame; + this.color = color; + binSize = hicFile.getBinSize(frame.getChrName(), frame.getScale()); + startBin = (int) (frame.getOrigin() / binSize); + + // Adjust frame to align with bin boundaries + int endBin = (int) (frame.getEnd() / binSize); + int nBins = endBin - startBin; + this.nBins = nBins; // Store the initial number of bins + frame.setOrigin(startBin * binSize); + frame.setScale(binSize); + frame.setWidthInPixels(nBins); + + // Set initial preferred size but don't constrain min/max to allow resizing + setPreferredSize(new Dimension(nBins, nBins)); + + // Add component listener to handle resize events + this.addComponentListener(new ComponentAdapter() { + @Override + public void componentResized(ComponentEvent e) { + updateFrameForSize(); + if (rulerPanel != null) { + rulerPanel.repaint(); + } + repaint(); + } + }); + + this.addMouseMotionListener(new MouseMotionAdapter() { + @Override + public void mouseMoved(MouseEvent e) { + super.mouseMoved(e); + // Calculate coordinates based on current scale + double scaleFactor = (double) getWidth() / ContactMapView.this.nBins; + int binX = (int) (e.getX() / scaleFactor) + startBin; + int binY = (int) (e.getY() / scaleFactor) + startBin; + int coordX = binX * binSize + binSize / 2; + int coordY = binY * binSize + binSize / 2; + track.setMarkerBounds(new int[]{coordX, coordY}); + + //String tooltip = String.format("Bin1: %d (Coord: %d), Bin2: %d (Coord: %d)", binX, coordX, binY, coordY); + //setToolTipText(tooltip); + } + }); + + this.addMouseListener(new MouseAdapter() { + @Override + public void mouseExited(MouseEvent e) { + super.mouseExited(e); + track.setMarkerBounds(null); + } + }); + + track.setContactMapView(this); + + // Initial data fetch + fetchDataAsync(); + + IGVEventBus.getInstance().subscribe(ViewChange.class, this); + } + + /** + * Generate a cache key based on current view parameters. + * If this key changes, we need to refetch data. + */ + private String generateCacheKey() { + return String.format("%s:%d:%d:%d:%s", + frame.getChrName(), + (int) frame.getOrigin(), + (int) frame.getEnd(), + binSize, + normalization); + } + + /** + * Generate a compound key for the color scale cache. + * Combines normalization and binSize so each combination has its own cached color scale. + */ + private String getColorScaleCacheKey() { + return normalization + "_" + binSize; + } + + /** + * Fetch contact records asynchronously in a background thread. + * When complete, triggers a repaint on the EDT. + */ + private void fetchDataAsync() { + String newCacheKey = generateCacheKey(); + + // Check if we already have valid cached data + if (newCacheKey.equals(dataCacheKey) && cachedRecords != null && !isLoading) { + return; // Data is already cached + } + + // Cancel any pending fetch task + if (currentFetchTask != null && !currentFetchTask.isDone()) { + currentFetchTask.cancel(true); + } + + isLoading = true; + loadingError = null; + // DON'T update dataCacheKey yet - only update it when data actually arrives + // This prevents the race condition where dataMatchesCurrentView returns true + // but we're still using stale cachedRecords + + // Trigger repaint to show loading indicator + repaint(); + + // Capture current state for the background thread + final String chrName = frame.getChrName(); + final int origin = (int) frame.getOrigin(); + final int end = (int) frame.getEnd(); + final int currentBinSize = binSize; + final String fetchCacheKey = newCacheKey; + + currentFetchTask = dataFetchExecutor.submit(() -> { + try { + Region region = new Region(chrName, origin, end); + List records = hicFile.getContactRecords( + region, + region, + "BP", + currentBinSize, + normalization, + true + ); + + // Update cache on EDT to avoid race conditions + SwingUtilities.invokeLater(() -> { + // Always update - we have fresh data for this fetch + cachedRecords = records; + dataCacheKey = fetchCacheKey; // NOW update dataCacheKey with the fresh data + isLoading = false; + loadingError = null; + repaint(); + }); + + } catch (IOException e) { + SwingUtilities.invokeLater(() -> { + dataCacheKey = fetchCacheKey; // Update cache key even on error + isLoading = false; + loadingError = e.getMessage(); + repaint(); + }); + } catch (Exception e) { + SwingUtilities.invokeLater(() -> { + dataCacheKey = fetchCacheKey; // Update cache key even on error + isLoading = false; + loadingError = "Unexpected error: " + e.getMessage(); + repaint(); + }); + } + }); + } + + /** + * Shutdown the executor service. Should be called when the view is disposed. + */ + public void dispose() { + // Cancel any pending fetch task + if (currentFetchTask != null) { + currentFetchTask.cancel(true); + } + + // Gracefully shutdown the executor + dataFetchExecutor.shutdown(); + try { + // Wait up to 2 seconds for current task to complete + if (!dataFetchExecutor.awaitTermination(2, java.util.concurrent.TimeUnit.SECONDS)) { + // Force shutdown if task doesn't complete in time + dataFetchExecutor.shutdownNow(); + } + } catch (InterruptedException e) { + // If interrupted while waiting, force shutdown + dataFetchExecutor.shutdownNow(); + Thread.currentThread().interrupt(); + } + } + + /** + * Change the genomic position by supplying a new ReferenceFrame. + * The frame will be adjusted to align with bin boundaries of the hicFile. + * If the bin size changes, the frame scale is adjusted to fit the specified + * genomic range within the existing component size (no resize). + * + * @param newFrame the new ReferenceFrame specifying the genomic region to display + */ + public void setReferenceFrame(ReferenceFrame newFrame) { + + String currentChr = frame.getChrName(); + + // Recalculate bin size for the new frame's scale + int newBinSize = hicFile.getBinSize(newFrame.getChrName(), newFrame.getScale()); + + if (newBinSize == binSize && newFrame.getChrName().equals(currentChr)) { + // No change in bin size or chromosome, just update frame's origin + // Update startBin to match the new origin + startBin = (int) (newFrame.getOrigin() / binSize); + frame.setOrigin(startBin * binSize); + + // Update frame end based on initialNBins + int endBin = startBin + nBins; + int genomicEnd = endBin * binSize; + + // Don't update frame.setEnd() as it's calculated, just ensure scale is correct + updateFrameForSize(); + + fetchDataAsync(); + return; + } + + // Update to the new frame + this.frame = new ReferenceFrame(newFrame); + binSize = newBinSize; + + // Calculate how many bins are needed to span the requested genomic range + int genomicSpan = (int) (newFrame.getEnd() - newFrame.getOrigin()); + int requestedNBins = (int) Math.ceil((double) genomicSpan / binSize); + + // Use the requested number of bins (this represents the genomic span) + nBins = requestedNBins; + + // Align to bin boundaries - startBin is the first bin we'll display + startBin = (int) (newFrame.getOrigin() / binSize); + + // Set frame origin to align with bin boundaries + frame.setOrigin(startBin * binSize); + + // The end is determined by the requested genomic span + int endBin = startBin + nBins; + + // Set the frame scale and width based on the requested region + frame.setScale(binSize); + frame.setWidthInPixels(nBins); + + // Update the frame scale to fit the requested genomic span in the current component width + // This will adjust the scale so the genomic region fits in the available pixels + updateFrameForSize(); + + // Trigger async data fetch + fetchDataAsync(); + + // Trigger repaint to show the new region + if (rulerPanel != null) { + rulerPanel.repaint(); + } + repaint(); + } + + /** + * Update the ReferenceFrame scale and widthInPixels based on the current component size. + * This allows the view to be responsive to window resizing while maintaining the same genomic region. + */ + private void updateFrameForSize() { + int currentWidth = getWidth(); + if (currentWidth <= 0) return; + + // Calculate the scale factor: how many pixels per bin + double pixelsPerBin = (double) currentWidth / nBins; + + // Update the frame's scale to reflect the new pixels-per-base-pair ratio + // Scale is base pairs per pixel, so we need binSize / pixelsPerBin + double newScale = binSize / pixelsPerBin; + frame.setScale(newScale); + + // Update width in pixels to match the current component width + frame.setWidthInPixels(currentWidth); + } + + @Override + public Dimension getPreferredSize() { + // Maintain square aspect ratio + Dimension pref = super.getPreferredSize(); + int size = Math.min(pref.width, pref.height); + return new Dimension(size, size); + } + + @Override + public Dimension getMinimumSize() { + // Maintain square aspect ratio with a reasonable minimum + int minSize = Math.max(100, nBins / 10); + return new Dimension(minSize, minSize); + } + + @Override + public Dimension getMaximumSize() { + // Maintain square aspect ratio + Dimension max = super.getMaximumSize(); + int size = Math.min(max.width, max.height); + return new Dimension(size, size); + } + + @Override + public void setBounds(int x, int y, int width, int height) { + // Force square dimensions by using the smaller of width/height + int size = Math.min(width, height); + super.setBounds(x, y, size, size); + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2D = (Graphics2D) g.create(); + try { + if (isLoading) { + // Show loading indicator + drawLoadingIndicator(g2D); + } else if (loadingError != null) { + // Show error message + g2D.setColor(Color.RED); + g2D.drawString("Error: " + loadingError, 10, 20); + } else if (cachedRecords != null) { + // Render from cached data + Image img = renderMapFromCache(); + if (img != null) { + g2D.drawImage(img, 0, 0, null); + } + } + } finally { + g2D.dispose(); + } + } + + /** + * Draw a loading indicator while data is being fetched. + */ + private void drawLoadingIndicator(Graphics2D g2D) { + int width = getWidth(); + int height = getHeight(); + + // Draw semi-transparent overlay if we have cached data + if (cachedRecords != null) { + Image img = renderMapFromCache(); + if (img != null) { + g2D.drawImage(img, 0, 0, null); + } + g2D.setColor(new Color(255, 255, 255, 128)); + g2D.fillRect(0, 0, width, height); + } + + // Draw loading text + g2D.setColor(Color.DARK_GRAY); + String message = "Loading..."; + FontMetrics fm = g2D.getFontMetrics(); + int textWidth = fm.stringWidth(message); + int textHeight = fm.getHeight(); + g2D.drawString(message, (width - textWidth) / 2, (height + textHeight) / 2); + } + + /** + * Render the contact map from cached data. + * This is called from paintComponent and only uses cached data. + */ + private Image renderMapFromCache() { + if (cachedRecords == null) { + return null; + } + + int width = getWidth(); + int height = getHeight(); + + if (width <= 0 || height <= 0) { + return null; + } + + BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + + // Calculate scale factor for rendering + double scaleFactor = (double) width / nBins; + + String colorScaleKey = getColorScaleCacheKey(); + ContinuousColorScale colorScale = colorScaleCache.get(colorScaleKey); + + // Check if the cached records match the current view parameters + // If they don't, we have stale data and shouldn't compute a new color scale yet + String currentCacheKey = generateCacheKey(); + boolean dataMatchesCurrentView = currentCacheKey.equals(dataCacheKey); + + // Check if this color scale was computed from the current data + String colorScaleDataKey = colorScaleDataKeys.get(colorScaleKey); + boolean colorScaleNeedsUpdate = colorScale == null || !currentCacheKey.equals(colorScaleDataKey); + + // We need to compute/recompute the color scale if: + // 1. No color scale exists for this key, OR + // 2. The color scale exists but was computed from different data + if (dataMatchesCurrentView && colorScaleNeedsUpdate) { + // We have fresh data and need to compute/update color scale from it + // First, compute the percentile and update slider range + double upper = computePercentileOnly(cachedRecords, .5); + + if (colorScale == null) { + // Create new color scale + Color lowerColor = Globals.isDarkMode() ? Color.BLACK : Color.WHITE; + colorScale = new ContinuousColorScale(0, upper, lowerColor, color); + colorScaleCache.put(colorScaleKey, colorScale); + } else { + // Update existing color scale with new max value + colorScale.setPosEnd(upper); + } + + // Track that this color scale was computed from the current data + colorScaleDataKeys.put(colorScaleKey, currentCacheKey); + + // Now update text field and slider position based on the new color scale + maxField.setText(String.format("%.2f", colorScale.getMaximum())); + updateSliderFromValue(colorScale.getMaximum()); + } else if (colorScale == null) { + // We don't have fresh data and no color scale exists + // Just return null and wait for fresh data + return null; + } + + + // paint pixels directly with scaling + for (ContactRecord record : cachedRecords) { + int binX = record.bin1() - startBin; + int binY = record.bin2() - startBin; + + // Scale the bin positions to pixel positions + int x = (int) (binX * scaleFactor); + int y = (int) (binY * scaleFactor); + + if (x >= 0 && y >= 0) { + Color color = colorScale.getColor(record.counts()); + + // Calculate the size of each scaled bin + int pixelSize = Math.max(1, (int) Math.ceil(scaleFactor)); + + // Fill the scaled pixel area + for (int dx = 0; dx < pixelSize && (x + dx) < width; dx++) { + for (int dy = 0; dy < pixelSize && (y + dy) < height; dy++) { + if ((x + dx) < width && (y + dy) < height) { + img.setRGB(x + dx, y + dy, color.getRGB()); + } + // Mirror for symmetry + if ((y + dx) < width && (x + dy) < height) { + img.setRGB(y + dx, x + dy, color.getRGB()); + } + } + } + } + } + + return img; + } + + /** + * Open the ContactMatrixView in a simple popup JFrame. The frame is created with DISPOSE_ON_CLOSE + * so closing it won't exit the application. + */ + public static void showPopup(InteractionTrack track, HicFile hicFile, String normalization, ReferenceFrame frame, Color color) { + + ReferenceFrame refFrame = new ReferenceFrame(frame); + + SwingUtilities.invokeLater(() -> { + JFrame jf = new JFrame(track.getDisplayName()); + jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + // Main panel with a border layout + JPanel mainPanel = new JPanel(new BorderLayout()); + + // ContactMatrixView + ContactMapView contactMapView = new ContactMapView(track, hicFile, normalization, refFrame, color); + mainPanel.add(contactMapView, BorderLayout.CENTER); + + // Create a panel to hold both the control panel and ruler panel + JPanel topPanel = new JPanel(new BorderLayout()); + + // Control panel with color scale max adjustment + JPanel controlPanel = contactMapView.createControlPanel(); + topPanel.add(controlPanel, BorderLayout.NORTH); + + // RulerPanel + RulerPanel rulerPanel = new RulerPanel(refFrame); + Dimension rulerSize = new Dimension(contactMapView.getPreferredSize().width, 50); + rulerPanel.setPreferredSize(rulerSize); + topPanel.add(rulerPanel, BorderLayout.CENTER); + + mainPanel.add(topPanel, BorderLayout.NORTH); + + // Store ruler panel reference for synchronized updates + contactMapView.rulerPanel = rulerPanel; + + // Add component listener to keep ruler panel width in sync with contact matrix view + contactMapView.addComponentListener(new ComponentAdapter() { + @Override + public void componentResized(ComponentEvent e) { + int width = contactMapView.getWidth(); + rulerPanel.setPreferredSize(new Dimension(width, 50)); + rulerPanel.revalidate(); + } + }); + + // Add window listener to unsubscribe from event bus when window closes + jf.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + IGVEventBus.getInstance().unsubscribe(contactMapView); + contactMapView.dispose(); + track.setContactMapView(null); + } + }); + + jf.getContentPane().add(mainPanel); + jf.pack(); + jf.setLocationRelativeTo(null); + jf.setVisible(true); + }); + } + + /** + * Create a control panel with input controls for adjusting visualization parameters. + * Currently includes a max value control for the color scale with both slider and text field. + * This panel can be extended with additional controls in the future. + */ + private JPanel createControlPanel() { + JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + controlPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + // Label for max value + JLabel maxLabel = new JLabel("Color Scale Max:"); + controlPanel.add(maxLabel); + + // Slider for max value - instance variable for this view + // Initial range 0-100, will be updated dynamically + this.maxSlider = new JSlider(0, 100, 50); + this.maxSlider.setPreferredSize(new Dimension(200, 25)); + this.maxSlider.setToolTipText(String.format("Range: %.2f - %.2f", sliderMinValue, sliderMaxValue)); + this.maxSlider.addChangeListener(e -> { + if (!this.maxSlider.getValueIsAdjusting()) { + // Map slider value (0-100) to actual range (sliderMinValue to sliderMaxValue) + double value = sliderMinValue + (sliderMaxValue - sliderMinValue) * this.maxSlider.getValue() / 100.0; + this.maxField.setText(String.format("%.2f", value)); + + // Update tooltip to show current value + this.maxSlider.setToolTipText(String.format("Value: %.2f (Range: %.2f - %.2f)", + value, sliderMinValue, sliderMaxValue)); + + // Update the color scale + String colorScaleKey = getColorScaleCacheKey(); + ContinuousColorScale colorScale = this.colorScaleCache.get(colorScaleKey); + if (colorScale != null) { + colorScale.setPosEnd(value); + this.repaint(); + } + } + }); + controlPanel.add(this.maxSlider); + + // Text field for max value - instance variable for this view + this.maxField = new JTextField("10", 10); + this.maxField.addActionListener(e -> { + try { + double newMax = Double.parseDouble(this.maxField.getText().trim()); + String colorScaleKey = getColorScaleCacheKey(); + ContinuousColorScale colorScale = this.colorScaleCache.get(colorScaleKey); + if (colorScale != null) { + colorScale.setPosEnd(newMax); + this.maxField.setText(String.format("%.2f", newMax)); + + // Update slider position based on text field value + updateSliderFromValue(newMax); + + this.repaint(); + } + } catch (NumberFormatException ex) { + JOptionPane.showMessageDialog(controlPanel, + "Invalid number format. Please enter a valid number.", + "Input Error", + JOptionPane.ERROR_MESSAGE); + } + }); + controlPanel.add(this.maxField); + + // Apply button + JButton applyButton = new JButton("Apply"); + applyButton.addActionListener(e -> { + try { + String colorScaleKey = getColorScaleCacheKey(); + ContinuousColorScale colorScale = this.colorScaleCache.get(colorScaleKey); + double newMax = Double.parseDouble(this.maxField.getText().trim()); + if (colorScale != null) { + colorScale.setPosEnd(newMax); + // Update the maxField value with the newMax + this.maxField.setText(String.format("%.2f", newMax)); + + // Update slider position based on text field value + updateSliderFromValue(newMax); + + this.repaint(); + } + } catch (NumberFormatException ex) { + JOptionPane.showMessageDialog(controlPanel, + "Invalid number format. Please enter a valid number.", + "Input Error", + JOptionPane.ERROR_MESSAGE); + } + }); + controlPanel.add(applyButton); + + return controlPanel; + } + + /** + * Update slider position based on a value within the current range. + * If value exceeds sliderMaxValue, expand the range. + */ + private void updateSliderFromValue(double value) { + // Expand slider range if value exceeds current maximum + if (value > sliderMaxValue) { + sliderMaxValue = value; + } + + if (sliderMaxValue > sliderMinValue) { + double normalized = (value - sliderMinValue) / (sliderMaxValue - sliderMinValue); + int sliderPos = (int) Math.round(normalized * 100); + sliderPos = Math.max(0, Math.min(100, sliderPos)); // Clamp to 0-100 + this.maxSlider.setValue(sliderPos); + + // Update tooltip to show current value and range + this.maxSlider.setToolTipText(String.format("Value: %.2f (Range: %.2f - %.2f)", + value, sliderMinValue, sliderMaxValue)); + } + } + + /** + * Update the slider range based on min and max values from the filtered data. + */ + private void updateSliderRange(double minValue, double maxValue) { + this.sliderMinValue = minValue; + this.sliderMaxValue = maxValue; + + // Update slider position to maintain current value if possible + String colorScaleKey = getColorScaleCacheKey(); + ContinuousColorScale colorScale = this.colorScaleCache.get(colorScaleKey); + if (colorScale != null) { + updateSliderFromValue(colorScale.getMaximum()); + } + } + + /** + * Format bin size for display (e.g., 1000 -> "1 kb", 1000000 -> "1 Mb") + */ + private static String formatBinSize(int binSize) { + if (binSize >= 1000000) { + return String.format("%.1f Mb", binSize / 1000000.0); + } else if (binSize >= 1000) { + return String.format("%.1f kb", binSize / 1000.0); + } else { + return binSize + " bp"; + } + } + + @Override + public void receiveEvent(IGVEvent event) { + if (event instanceof ViewChange) { + ViewChange vc = (ViewChange) event; + if (!vc.panning) { + setReferenceFrame(vc.referenceFrame); + } + } + } + + /** + * Compute a percentile of the "counts" value in contactRecords, + * filtering records where Math.abs(bin2 - bin1) < 5. + * Also updates the slider range based on the min/max of filtered counts. + * Does NOT update the slider position - caller should do that after updating the color scale. + * + * @return the percentile value, or -1 if contactRecords is empty + */ + private double computePercentileOnly(List contactRecords, double percentile) { + if (contactRecords == null || contactRecords.isEmpty()) { + return -1; // Return -1 if there are no records + } + + // Filter records where Math.abs(bin2 - bin1) < 5 + List counts = contactRecords.stream() + .filter(record -> Math.abs(record.bin2() - record.bin1()) < 5) + .map(ContactRecord::counts) + .sorted() + .collect(Collectors.toList()); + + if (counts.isEmpty()) { + return -1; // Return -1 if no records pass the filter + } + + int index = (int) Math.ceil(percentile * counts.size()) - 1; + float midCount = counts.get(index); + + // Update slider range based on min and max of filtered counts + float minCount = counts.get(0); + float maxCount = 2 * midCount; + this.sliderMinValue = minCount; + this.sliderMaxValue = maxCount; + + + return midCount; + } + + public void setNormalization(String type) { + if (this.normalization != null && this.normalization.equals(type)) { + return; // No change + } + + this.normalization = type; + + // Clear cached data since normalization affects the contact record values + this.cachedRecords = null; + this.dataCacheKey = null; + + // No need to clear colorScaleCache since it uses compound keys (normalization_binSize) + // Each normalization + binSize combination maintains its own color scale + + // Trigger async data fetch with new normalization + fetchDataAsync(); + } +} diff --git a/src/main/java/org/igv/bedpe/HicSource.java b/src/main/java/org/igv/bedpe/HicSource.java index 1aaab47ed8..1fff8bd8db 100644 --- a/src/main/java/org/igv/bedpe/HicSource.java +++ b/src/main/java/org/igv/bedpe/HicSource.java @@ -34,7 +34,7 @@ public HicSource(String path, Genome genome) throws IOException { @Override public List getFeatures(String chr, int start, int end, double bpPerPixel, String normalization, int maxFeatureCount) throws IOException { - final int binSize = getBinSize(chr, bpPerPixel); + final int binSize = hicFile.getBinSize(chr, bpPerPixel); List records = getRecords(chr, start, end, binSize); @@ -159,26 +159,6 @@ public List getFeatures(String chr, int start, int end, double bpPerPixel return features; } - private int getBinSize(String chr, double bpPerPixel) { - - if("all".equalsIgnoreCase(chr)) { - // Special case, the whole-genome psuedo-chromosome all has a single resolution - return hicFile.getWGResolution(); - } - - // choose resolution - List resolutions = hicFile.getBpResolutions(); - int index = 0; - for (int i = resolutions.size() - 1; i >= 0; i--) { - if (resolutions.get(i) >= bpPerPixel) { - index = i; - break; - } - } - int binSize = resolutions.get(index); - return binSize; - } - @Override public List getNormalizationTypes() { return hicFile.getNormalizationTypes(); @@ -186,7 +166,7 @@ public List getNormalizationTypes() { @Override public boolean hasNormalizationVector(String type, String chr, double bpPerPixel) { - return hicFile.hasNormalizationVector(type, chr, "BP", getBinSize(chr, bpPerPixel)); + return hicFile.hasNormalizationVector(type, chr, "BP", hicFile.getBinSize(chr, bpPerPixel)); } /** @@ -209,17 +189,18 @@ private List getRecords(String chr, int start, int end, int binSi region1, "BP", binSize, + "NONE", false ); if(start > 0) { Region adjacent = new Region(chr, Math.max(0, start - (end - start)), start); - List adjacentRecords = hicFile.getContactRecords(region1, adjacent, "BP", binSize, false); + List adjacentRecords = hicFile.getContactRecords(region1, adjacent, "BP", binSize, "NONE", false); records.addAll(adjacentRecords); } Region adjacent2 = new Region(chr, end, end + (end - start)); - List adjacentRecords2 = hicFile.getContactRecords(region1, adjacent2, "BP", binSize, false); + List adjacentRecords2 = hicFile.getContactRecords(region1, adjacent2, "BP", binSize, "NONE", false); records.addAll(adjacentRecords2); return records; @@ -244,4 +225,7 @@ public void setNVIString(String nviString) { hicFile.setNVIString(nviString); } + public HicFile getHicFile() { + return hicFile; + } } \ No newline at end of file diff --git a/src/main/java/org/igv/bedpe/InteractionTrack.java b/src/main/java/org/igv/bedpe/InteractionTrack.java index b87eaf4213..c61a44be96 100644 --- a/src/main/java/org/igv/bedpe/InteractionTrack.java +++ b/src/main/java/org/igv/bedpe/InteractionTrack.java @@ -3,11 +3,13 @@ import org.igv.Globals; import org.igv.event.IGVEvent; import org.igv.event.IGVEventObserver; +import org.igv.hic.HicFile; import org.igv.jbrowse.CircularViewUtilities; import org.igv.logging.LogManager; import org.igv.logging.Logger; import org.igv.prefs.Constants; import org.igv.prefs.PreferencesManager; +import org.igv.renderer.ContinuousColorScale; import org.igv.renderer.GraphicUtils; import org.igv.track.AbstractTrack; import org.igv.track.RenderContext; @@ -76,10 +78,13 @@ enum ArcOption {ALL, ONE_END, BOTH_ENDS} private Map renderers; private boolean isHIC; + ContactMapView contactMapView; float transparency = 1.0f; String normalization = "NONE"; private int maxFeatureCount = 5000; + int[] markerBounds = null; + transient Map> lastRenderedFeatures = new HashMap<>(); transient Map loadedIntervalMap = new HashMap<>(); @@ -144,6 +149,10 @@ public InteractionTrack(ResourceLocator locator, InteractionSource src) { } } + void setContactMapView(ContactMapView contactMapView) { + this.contactMapView = contactMapView; + } + protected boolean isShowFeatures(ReferenceFrame frame) { if (frame.getChrName().equals(Globals.CHR_ALL)) { @@ -254,6 +263,8 @@ public void render(RenderContext context, Rectangle trackRectangle) { if (showBlocks) { renderers.get(GraphType.BLOCK).render(filteredFeatures, context, trackRectangle, this.arcOption); } + if(contactMapView != null && !FrameManager.isGeneListMode()) { + } } finally { context.clearGraphicsCache(); @@ -499,13 +510,31 @@ public IGVPopupMenu getPopupMenu(TrackClickEvent te) { normItem.setSelected(type.equals(normalization)); normItem.addActionListener(e -> { this.normalization = type; + if(contactMapView != null) { + contactMapView.setNormalization(type); + } InteractionTrack.this.repaint(); + }); normGroup.add(normItem); menu.add(normItem); } } + menu.addSeparator(); + JMenuItem mapItem = new JMenuItem("Open Contact Map View"); + mapItem.setEnabled(contactMapView == null && !FrameManager.isGeneListMode()); + mapItem.addActionListener(e -> { + ReferenceFrame frame = te.getFrame() != null ? te.getFrame() : FrameManager.getDefaultFrame(); + if (contactMapView == null) { + ContinuousColorScale colorScale = this.getColorScale(); + + HicFile hicFile = ((HicSource) featureSource).getHicFile(); + ContactMapView.showPopup(this, hicFile, normalization, frame, colorScale.getMaxColor()); + } + }); + menu.add(mapItem); + } else { menu.addSeparator(); menu.add(TrackMenuUtils.getChangeFeatureWindow(Collections.singletonList(this))); @@ -666,6 +695,11 @@ public void receiveEvent(IGVEvent event) { } } + public void setMarkerBounds(int[] markerBounds) { + this.markerBounds = markerBounds; + this.repaint(); + } + public record LoadedInterval(String chr, int start, int end, int zoom, String normalization, List features) { diff --git a/src/main/java/org/igv/bedpe/NestedArcRenderer.java b/src/main/java/org/igv/bedpe/NestedArcRenderer.java index 2ff75510f1..1719ec6f02 100644 --- a/src/main/java/org/igv/bedpe/NestedArcRenderer.java +++ b/src/main/java/org/igv/bedpe/NestedArcRenderer.java @@ -133,6 +133,14 @@ public void render(List features, } } + + if(track.markerBounds != null) { + int l1 = (int) ((track.markerBounds[0] - origin) / locScale); + int l2 = (int) ((track.markerBounds[1] - origin) / locScale); + g.setColor(Color.black); + g.drawLine(l1, trackRectangle.y, l1, trackRectangle.y + trackRectangle.height - 1); + g.drawLine(l2, trackRectangle.y, l2, trackRectangle.y + trackRectangle.height - 1); + } } finally { if(g != null) g.dispose(); } diff --git a/src/main/java/org/igv/blast/BlastMapping.java b/src/main/java/org/igv/blast/BlastMapping.java index e96859fe01..e9d8852c45 100644 --- a/src/main/java/org/igv/blast/BlastMapping.java +++ b/src/main/java/org/igv/blast/BlastMapping.java @@ -1,6 +1,5 @@ package org.igv.blast; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.feature.BasicFeature; import org.igv.feature.Strand; diff --git a/src/main/java/org/igv/data/AbstractDataSource.java b/src/main/java/org/igv/data/AbstractDataSource.java index 1edf9c06f3..4dd9498dde 100644 --- a/src/main/java/org/igv/data/AbstractDataSource.java +++ b/src/main/java/org/igv/data/AbstractDataSource.java @@ -1,6 +1,5 @@ package org.igv.data; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.Globals; diff --git a/src/main/java/org/igv/data/BasicScore.java b/src/main/java/org/igv/data/BasicScore.java index dc4c21a1b3..c3e22c735a 100644 --- a/src/main/java/org/igv/data/BasicScore.java +++ b/src/main/java/org/igv/data/BasicScore.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.feature.LocusScore; diff --git a/src/main/java/org/igv/data/Bin.java b/src/main/java/org/igv/data/Bin.java index ad6af39391..c0eaa659eb 100644 --- a/src/main/java/org/igv/data/Bin.java +++ b/src/main/java/org/igv/data/Bin.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; diff --git a/src/main/java/org/igv/data/CharArrayList.java b/src/main/java/org/igv/data/CharArrayList.java index 37b7813103..72bd968de0 100644 --- a/src/main/java/org/igv/data/CharArrayList.java +++ b/src/main/java/org/igv/data/CharArrayList.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; diff --git a/src/main/java/org/igv/data/ChromosomeSummary.java b/src/main/java/org/igv/data/ChromosomeSummary.java index 7c3ddf12aa..5961f1ef5b 100644 --- a/src/main/java/org/igv/data/ChromosomeSummary.java +++ b/src/main/java/org/igv/data/ChromosomeSummary.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; /** diff --git a/src/main/java/org/igv/data/CompositeScore.java b/src/main/java/org/igv/data/CompositeScore.java index ce4585370d..f294e2d065 100644 --- a/src/main/java/org/igv/data/CompositeScore.java +++ b/src/main/java/org/igv/data/CompositeScore.java @@ -1,6 +1,5 @@ package org.igv.data; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.feature.LocusScore; import org.igv.track.WindowFunction; diff --git a/src/main/java/org/igv/data/DataSource.java b/src/main/java/org/igv/data/DataSource.java index 78713b9679..0964f6b8a6 100644 --- a/src/main/java/org/igv/data/DataSource.java +++ b/src/main/java/org/igv/data/DataSource.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; diff --git a/src/main/java/org/igv/data/DataStatistics.java b/src/main/java/org/igv/data/DataStatistics.java index 606464ca29..76cd79f90b 100644 --- a/src/main/java/org/igv/data/DataStatistics.java +++ b/src/main/java/org/igv/data/DataStatistics.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.track.WindowFunction; diff --git a/src/main/java/org/igv/data/DataTile.java b/src/main/java/org/igv/data/DataTile.java index c17199fd39..fe35a300a9 100644 --- a/src/main/java/org/igv/data/DataTile.java +++ b/src/main/java/org/igv/data/DataTile.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; /** diff --git a/src/main/java/org/igv/data/Dataset.java b/src/main/java/org/igv/data/Dataset.java index e1ebc7788d..aec2902782 100644 --- a/src/main/java/org/igv/data/Dataset.java +++ b/src/main/java/org/igv/data/Dataset.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.track.TrackProperties; diff --git a/src/main/java/org/igv/data/DatasetDataSource.java b/src/main/java/org/igv/data/DatasetDataSource.java index ee00d83993..f9713fc025 100644 --- a/src/main/java/org/igv/data/DatasetDataSource.java +++ b/src/main/java/org/igv/data/DatasetDataSource.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.Globals; diff --git a/src/main/java/org/igv/data/GenomeSummaryData.java b/src/main/java/org/igv/data/GenomeSummaryData.java index ecfc8c006d..a07377a842 100644 --- a/src/main/java/org/igv/data/GenomeSummaryData.java +++ b/src/main/java/org/igv/data/GenomeSummaryData.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.logging.*; diff --git a/src/main/java/org/igv/data/IGVDataset.java b/src/main/java/org/igv/data/IGVDataset.java index 8ce00813e3..cb6a50d4bf 100644 --- a/src/main/java/org/igv/data/IGVDataset.java +++ b/src/main/java/org/igv/data/IGVDataset.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.feature.genome.Genome; diff --git a/src/main/java/org/igv/data/IGVDatasetParser.java b/src/main/java/org/igv/data/IGVDatasetParser.java index 093d0699c6..2c86dee264 100644 --- a/src/main/java/org/igv/data/IGVDatasetParser.java +++ b/src/main/java/org/igv/data/IGVDatasetParser.java @@ -1,6 +1,5 @@ package org.igv.data; -//~--- non-JDK imports -------------------------------------------------------- import htsjdk.samtools.seekablestream.SeekableStream; import org.igv.logging.*; diff --git a/src/main/java/org/igv/data/SummaryTile.java b/src/main/java/org/igv/data/SummaryTile.java index 618c62cbf5..96c2b775ba 100644 --- a/src/main/java/org/igv/data/SummaryTile.java +++ b/src/main/java/org/igv/data/SummaryTile.java @@ -1,6 +1,5 @@ package org.igv.data; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.feature.LocusScore; diff --git a/src/main/java/org/igv/data/WiggleDataset.java b/src/main/java/org/igv/data/WiggleDataset.java index dab40d67e0..3be4c086f5 100644 --- a/src/main/java/org/igv/data/WiggleDataset.java +++ b/src/main/java/org/igv/data/WiggleDataset.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.feature.genome.Genome; import org.igv.track.TrackProperties; diff --git a/src/main/java/org/igv/data/ZipUtils.java b/src/main/java/org/igv/data/ZipUtils.java index 6b488e1ff2..3cd4ac5d77 100644 --- a/src/main/java/org/igv/data/ZipUtils.java +++ b/src/main/java/org/igv/data/ZipUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.util.FileUtils; diff --git a/src/main/java/org/igv/data/expression/ExpressionFileParser.java b/src/main/java/org/igv/data/expression/ExpressionFileParser.java index e861e3feb6..87af3ba08d 100644 --- a/src/main/java/org/igv/data/expression/ExpressionFileParser.java +++ b/src/main/java/org/igv/data/expression/ExpressionFileParser.java @@ -10,7 +10,6 @@ */ package org.igv.data.expression; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.Globals; diff --git a/src/main/java/org/igv/feature/AbstractFeature.java b/src/main/java/org/igv/feature/AbstractFeature.java index b5388a5ff0..22f650bd67 100644 --- a/src/main/java/org/igv/feature/AbstractFeature.java +++ b/src/main/java/org/igv/feature/AbstractFeature.java @@ -1,6 +1,5 @@ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.ui.IGV; diff --git a/src/main/java/org/igv/feature/AbstractFeatureParser.java b/src/main/java/org/igv/feature/AbstractFeatureParser.java index b1d6d4e91b..39ea54e1f4 100644 --- a/src/main/java/org/igv/feature/AbstractFeatureParser.java +++ b/src/main/java/org/igv/feature/AbstractFeatureParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; import org.igv.logging.*; diff --git a/src/main/java/org/igv/feature/CytoBandFileParser.java b/src/main/java/org/igv/feature/CytoBandFileParser.java index 935c53a079..84898fa4ac 100644 --- a/src/main/java/org/igv/feature/CytoBandFileParser.java +++ b/src/main/java/org/igv/feature/CytoBandFileParser.java @@ -1,6 +1,5 @@ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import htsjdk.tribble.readers.AsciiLineReader; diff --git a/src/main/java/org/igv/feature/EmblFeatureTableParser.java b/src/main/java/org/igv/feature/EmblFeatureTableParser.java index 4d424b3a69..35a867a114 100644 --- a/src/main/java/org/igv/feature/EmblFeatureTableParser.java +++ b/src/main/java/org/igv/feature/EmblFeatureTableParser.java @@ -1,6 +1,5 @@ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.feature.genome.Genome; diff --git a/src/main/java/org/igv/feature/FeatureDB.java b/src/main/java/org/igv/feature/FeatureDB.java index 08d45fe514..363c7e685c 100644 --- a/src/main/java/org/igv/feature/FeatureDB.java +++ b/src/main/java/org/igv/feature/FeatureDB.java @@ -1,6 +1,5 @@ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import com.jidesoft.utils.SortedList; import htsjdk.tribble.Feature; diff --git a/src/main/java/org/igv/feature/FeatureParser.java b/src/main/java/org/igv/feature/FeatureParser.java index 16069593c8..1e47aac147 100644 --- a/src/main/java/org/igv/feature/FeatureParser.java +++ b/src/main/java/org/igv/feature/FeatureParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; diff --git a/src/main/java/org/igv/feature/GisticFileParser.java b/src/main/java/org/igv/feature/GisticFileParser.java index e0c80fc122..4a6ecb06b5 100644 --- a/src/main/java/org/igv/feature/GisticFileParser.java +++ b/src/main/java/org/igv/feature/GisticFileParser.java @@ -8,7 +8,6 @@ */ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.exceptions.ParserException; diff --git a/src/main/java/org/igv/feature/GisticScore.java b/src/main/java/org/igv/feature/GisticScore.java index 23d91d7da4..c245915f34 100644 --- a/src/main/java/org/igv/feature/GisticScore.java +++ b/src/main/java/org/igv/feature/GisticScore.java @@ -9,7 +9,6 @@ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.track.WindowFunction; diff --git a/src/main/java/org/igv/feature/Locus.java b/src/main/java/org/igv/feature/Locus.java index b4af0ea8a7..db660e1d46 100644 --- a/src/main/java/org/igv/feature/Locus.java +++ b/src/main/java/org/igv/feature/Locus.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; import java.text.NumberFormat; diff --git a/src/main/java/org/igv/feature/LocusScore.java b/src/main/java/org/igv/feature/LocusScore.java index 46b53e46c0..5a29483685 100644 --- a/src/main/java/org/igv/feature/LocusScore.java +++ b/src/main/java/org/igv/feature/LocusScore.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; import org.igv.track.WindowFunction; diff --git a/src/main/java/org/igv/feature/Mutation.java b/src/main/java/org/igv/feature/Mutation.java index 93f77d913b..8e49fd5d9e 100644 --- a/src/main/java/org/igv/feature/Mutation.java +++ b/src/main/java/org/igv/feature/Mutation.java @@ -1,6 +1,5 @@ package org.igv.feature; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.feature.genome.GenomeManager; import org.igv.logging.*; diff --git a/src/main/java/org/igv/feature/Strand.java b/src/main/java/org/igv/feature/Strand.java index 41b559fe02..4f2b16e028 100644 --- a/src/main/java/org/igv/feature/Strand.java +++ b/src/main/java/org/igv/feature/Strand.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; diff --git a/src/main/java/org/igv/feature/aa/AminoAcid.java b/src/main/java/org/igv/feature/aa/AminoAcid.java index 6d7e246a7f..5e6517ec74 100644 --- a/src/main/java/org/igv/feature/aa/AminoAcid.java +++ b/src/main/java/org/igv/feature/aa/AminoAcid.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.aa; /** diff --git a/src/main/java/org/igv/feature/aa/AminoAcidManager.java b/src/main/java/org/igv/feature/aa/AminoAcidManager.java index 0af284b86c..fd8175ad62 100644 --- a/src/main/java/org/igv/feature/aa/AminoAcidManager.java +++ b/src/main/java/org/igv/feature/aa/AminoAcidManager.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.aa; import org.igv.logging.*; diff --git a/src/main/java/org/igv/feature/aa/AminoAcidSequence.java b/src/main/java/org/igv/feature/aa/AminoAcidSequence.java index d481828fd9..51dfac7d6a 100644 --- a/src/main/java/org/igv/feature/aa/AminoAcidSequence.java +++ b/src/main/java/org/igv/feature/aa/AminoAcidSequence.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.aa; import org.igv.feature.Strand; diff --git a/src/main/java/org/igv/feature/aa/CodonTableManager.java b/src/main/java/org/igv/feature/aa/CodonTableManager.java index b4ed808a02..26eab38708 100644 --- a/src/main/java/org/igv/feature/aa/CodonTableManager.java +++ b/src/main/java/org/igv/feature/aa/CodonTableManager.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.aa; import org.igv.logging.*; diff --git a/src/main/java/org/igv/feature/basepair/BasePairRenderer.java b/src/main/java/org/igv/feature/basepair/BasePairRenderer.java index d1084825de..a30555a105 100644 --- a/src/main/java/org/igv/feature/basepair/BasePairRenderer.java +++ b/src/main/java/org/igv/feature/basepair/BasePairRenderer.java @@ -1,6 +1,5 @@ package org.igv.feature.basepair; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.feature.basepair.BasePairTrack.*; diff --git a/src/main/java/org/igv/feature/dranger/DRangerFeature.java b/src/main/java/org/igv/feature/dranger/DRangerFeature.java index e3d3768734..efe808086b 100644 --- a/src/main/java/org/igv/feature/dranger/DRangerFeature.java +++ b/src/main/java/org/igv/feature/dranger/DRangerFeature.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.dranger; import org.igv.feature.AbstractFeature; diff --git a/src/main/java/org/igv/feature/dranger/DRangerParser.java b/src/main/java/org/igv/feature/dranger/DRangerParser.java index 228f8a7001..d9aa765800 100644 --- a/src/main/java/org/igv/feature/dranger/DRangerParser.java +++ b/src/main/java/org/igv/feature/dranger/DRangerParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.dranger; import org.igv.logging.*; diff --git a/src/main/java/org/igv/feature/dranger/DRangerRenderer.java b/src/main/java/org/igv/feature/dranger/DRangerRenderer.java index 387a322a2c..cbe2d2dff0 100644 --- a/src/main/java/org/igv/feature/dranger/DRangerRenderer.java +++ b/src/main/java/org/igv/feature/dranger/DRangerRenderer.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.dranger; import org.igv.feature.IGVFeature; diff --git a/src/main/java/org/igv/feature/genome/GenomeImporter.java b/src/main/java/org/igv/feature/genome/GenomeImporter.java index 46e7e29ec6..1d9e01a200 100644 --- a/src/main/java/org/igv/feature/genome/GenomeImporter.java +++ b/src/main/java/org/igv/feature/genome/GenomeImporter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.genome; import org.igv.logging.*; diff --git a/src/main/java/org/igv/feature/genome/SequenceWrapper.java b/src/main/java/org/igv/feature/genome/SequenceWrapper.java index a59bb22345..2853458f6d 100644 --- a/src/main/java/org/igv/feature/genome/SequenceWrapper.java +++ b/src/main/java/org/igv/feature/genome/SequenceWrapper.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.genome; import org.igv.feature.Chromosome; diff --git a/src/main/java/org/igv/hic/DynamicBlockIndex.java b/src/main/java/org/igv/hic/DynamicBlockIndex.java index 67d1c210fa..4667f82bbf 100644 --- a/src/main/java/org/igv/hic/DynamicBlockIndex.java +++ b/src/main/java/org/igv/hic/DynamicBlockIndex.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.channels.FileChannel; import java.util.HashMap; import java.util.Map; @@ -60,6 +61,7 @@ private StaticBlockIndex.BlockIndexEntry searchForBlockIndexEntry(int blockNumbe if (boundsMax - boundsMin < chunkSize) { int len = (int) (boundsMax - boundsMin); ByteBuffer buf = ByteBuffer.allocate(len); + buf.order(ByteOrder.LITTLE_ENDIAN); fileChannel.read(buf, boundsMin); buf.flip(); @@ -84,6 +86,7 @@ private StaticBlockIndex.BlockIndexEntry searchForBlockIndexEntry(int blockNumbe long nEntries = (boundsMax - boundsMin) / ENTRY_SIZE; long pos1 = boundsMin + (nEntries / 2) * ENTRY_SIZE; ByteBuffer buf = ByteBuffer.allocate((int) ENTRY_SIZE); + buf.order(ByteOrder.LITTLE_ENDIAN); fileChannel.read(buf, pos1); buf.flip(); int bn = buf.getInt(); diff --git a/src/main/java/org/igv/hic/HicFile.java b/src/main/java/org/igv/hic/HicFile.java index 5f82bef931..6d5555a1ab 100644 --- a/src/main/java/org/igv/hic/HicFile.java +++ b/src/main/java/org/igv/hic/HicFile.java @@ -15,6 +15,9 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; /** * Representation of a .hic file, with methods to access contact recrods and normalization vectors. @@ -69,6 +72,10 @@ public int getByteSize() { private List normalizationTypes = new ArrayList<>(Collections.singletonList("NONE")); private Long normExpectedValueVectorsPosition; + // Map to track pending block read requests to prevent duplicate I/O operations + // Key is the block key, value is a CompletableFuture that will complete when the block is loaded + private final Map> pendingBlockRequests = new ConcurrentHashMap<>(); + public HicFile(String path, Genome genome) throws IOException { this.path = path; @@ -253,6 +260,7 @@ public List getContactRecords(Region region1, Region region2, String units, int binSize, + String normalization, boolean allRecords) throws IOException { int idx1 = chromosomeIndexMap.getOrDefault(getFileChrName(region1.chr()), -1); @@ -274,12 +282,43 @@ public List getContactRecords(Region region1, double y1 = (double) region2.start() / binSize; double y2 = (double) region2.end() / binSize; + + boolean useNormalization = normalization != null && !"NONE".equals(normalization); + NormalizationVector nv = useNormalization ? getNormalizationVector(normalization, region1.chr(), "BP", binSize) : null; + if (nv == null) { + useNormalization = false; + } + + for (Block block : blocks) { if (block == null) continue; + double[] normVector = null; + + // Compute binMin and binMax from block.records + int binMin = Integer.MAX_VALUE; + int binMax = Integer.MIN_VALUE; + if (useNormalization) { + for (ContactRecord rec : block.records) { + binMin = Math.min(binMin, Math.min(rec.bin1(), rec.bin2())); + binMax = Math.max(binMax, Math.max(rec.bin1(), rec.bin2())); + } + normVector = nv.getValues(binMin, binMax); + } + for (ContactRecord rec : block.records) { if (allRecords || (rec.bin1() >= x1 && rec.bin1() < x2 && rec.bin2() >= y1 && rec.bin2() < y2) && rec.counts() > 1) { - contactRecords.add(rec); + if (normVector == null) { + contactRecords.add(rec); + } else { + float value = rec.counts(); + double nvnv = normVector[rec.bin1() - binMin] * normVector[rec.bin2() - binMin]; + if (!Double.isNaN(nvnv)) { + value /= nvnv; + ContactRecord normRec = new ContactRecord(rec.bin1(), rec.bin2(), value); + contactRecords.add(normRec); + } + } } } } @@ -305,6 +344,27 @@ public int getWGResolution() { return wgResolution; } + public int getBinSize(String chr, double bpPerPixel) { + + if ("all".equalsIgnoreCase(chr)) { + // Special case, the whole-genome psuedo-chromosome all has a single resolution + return this.getWGResolution(); + } + + // choose resolution + List resolutions = this.getBpResolutions(); + int index = 0; + for (int i = resolutions.size() - 1; i >= 0; i--) { + if (resolutions.get(i) >= bpPerPixel) { + index = i; + break; + } + } + int binSize = resolutions.get(index); + return binSize; + + } + private List getBlocks(Region region1, Region region2, String unit, int binSize) throws IOException { init(); String chr1 = getFileChrName(region1.chr()); @@ -325,6 +385,7 @@ private List getBlocks(Region region1, Region region2, String unit, int b List blockNumbers = zd.getBlockNumbers(region1, region2, this.version); List blocks = new ArrayList<>(); List toQuery = new ArrayList<>(); + for (Integer num : blockNumbers) { String key = zd.getKey() + "_" + num; if (blockCache.has(binSize, key)) { @@ -334,17 +395,66 @@ private List getBlocks(Region region1, Region region2, String unit, int b } } + // Fetch blocks that aren't in cache, with deduplication for concurrent requests for (Integer bn : toQuery) { - Block b = readBlock(bn, zd); - if (b != null) { - blockCache.set(binSize, zd.getKey() + "_" + b.blockNumber, b); - } - blocks.add(b); + String key = zd.getKey() + "_" + bn; + Block block = getBlockWithDeduplication(key, bn, binSize, zd); + blocks.add(block); } return blocks; } + /** + * Get a block with request deduplication. If another thread is already fetching the same block, + * this method will wait for that operation to complete and return the same result instead of + * initiating a redundant read. + */ + private Block getBlockWithDeduplication(String key, int blockNumber, int binSize, MatrixZoomData zd) throws IOException { + // Double-check cache (in case another thread just added it) + if (blockCache.has(binSize, key)) { + return blockCache.get(binSize, key); + } + + // Create a new future for this request + CompletableFuture newFuture = new CompletableFuture<>(); + + // Try to be the first to register this request + CompletableFuture existingFuture = pendingBlockRequests.putIfAbsent(key, newFuture); + + if (existingFuture != null) { + // Another thread is already fetching this block - wait for its result + try { + return existingFuture.get(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IOException("Interrupted while waiting for block data", e); + } catch (ExecutionException e) { + Throwable cause = e.getCause(); + if (cause instanceof IOException) { + throw (IOException) cause; + } + throw new IOException("Error reading block", cause); + } + } + + // This thread won the race - perform the actual read + try { + Block block = readBlock(blockNumber, zd); + if (block != null) { + blockCache.set(binSize, key, block); + } + newFuture.complete(block); + return block; + } catch (IOException e) { + newFuture.completeExceptionally(e); + throw e; + } finally { + // Clean up the pending request + pendingBlockRequests.remove(key); + } + } + private Block readBlock(int blockNumber, MatrixZoomData zd) throws IOException { StaticBlockIndex.BlockIndexEntry idx = zd.getBlockIndex().getBlockIndexEntry(blockNumber); if (idx == null) return null; diff --git a/src/main/java/org/igv/hic/NormalizationVector.java b/src/main/java/org/igv/hic/NormalizationVector.java index 6c01f9c36f..bf63d54f86 100644 --- a/src/main/java/org/igv/hic/NormalizationVector.java +++ b/src/main/java/org/igv/hic/NormalizationVector.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.channels.FileChannel; import java.util.Arrays; @@ -55,6 +56,10 @@ public NormalizationVector(SeekableStream fileChannel, long filePosition, int nV this.cache = null; } + public int getnValues() { + return nValues; + } + /** * Return values in range [start, end) as a double[]. * Returns null if the underlying read fails. @@ -87,6 +92,7 @@ public double[] getValues(int startBin, int endBin) throws IOException { return null; } ByteBuffer buf = ByteBuffer.wrap(byteArray); + buf.order(ByteOrder.LITTLE_ENDIAN); double[] values = new double[n]; for (int i = 0; i < n; i++) { diff --git a/src/main/java/org/igv/maf/MAFReader.java b/src/main/java/org/igv/maf/MAFReader.java index 8d45b6f675..4d33f9fac1 100644 --- a/src/main/java/org/igv/maf/MAFReader.java +++ b/src/main/java/org/igv/maf/MAFReader.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.maf; diff --git a/src/main/java/org/igv/maf/MAFTile.java b/src/main/java/org/igv/maf/MAFTile.java index dd00312f2d..6cfb57629a 100644 --- a/src/main/java/org/igv/maf/MAFTile.java +++ b/src/main/java/org/igv/maf/MAFTile.java @@ -1,6 +1,5 @@ package org.igv.maf; -//~--- non-JDK imports -------------------------------------------------------- import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/src/main/java/org/igv/maf/MAFTileCodec.java b/src/main/java/org/igv/maf/MAFTileCodec.java index e89d467286..a211d4c989 100644 --- a/src/main/java/org/igv/maf/MAFTileCodec.java +++ b/src/main/java/org/igv/maf/MAFTileCodec.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.maf; import org.igv.maf.MAFTile.MASequence; diff --git a/src/main/java/org/igv/maf/MAFUtils.java b/src/main/java/org/igv/maf/MAFUtils.java index 2767f08406..a1d7c74c1b 100644 --- a/src/main/java/org/igv/maf/MAFUtils.java +++ b/src/main/java/org/igv/maf/MAFUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.maf; diff --git a/src/main/java/org/igv/maf/Multiz44ConfigurationDialog.java b/src/main/java/org/igv/maf/Multiz44ConfigurationDialog.java index ceefe1c810..73046eadf6 100644 --- a/src/main/java/org/igv/maf/Multiz44ConfigurationDialog.java +++ b/src/main/java/org/igv/maf/Multiz44ConfigurationDialog.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ /* * MAFConfigurationDialog.java diff --git a/src/main/java/org/igv/prefs/IGVPreferences.java b/src/main/java/org/igv/prefs/IGVPreferences.java index babc6d93e8..583b5d6a6d 100644 --- a/src/main/java/org/igv/prefs/IGVPreferences.java +++ b/src/main/java/org/igv/prefs/IGVPreferences.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.prefs; diff --git a/src/main/java/org/igv/renderer/AbstractColorScale.java b/src/main/java/org/igv/renderer/AbstractColorScale.java index 2ccaab25f8..eb5d98ae4a 100644 --- a/src/main/java/org/igv/renderer/AbstractColorScale.java +++ b/src/main/java/org/igv/renderer/AbstractColorScale.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; diff --git a/src/main/java/org/igv/renderer/ColorScale.java b/src/main/java/org/igv/renderer/ColorScale.java index 0c970be6eb..0a3909635a 100644 --- a/src/main/java/org/igv/renderer/ColorScale.java +++ b/src/main/java/org/igv/renderer/ColorScale.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import java.awt.*; diff --git a/src/main/java/org/igv/renderer/ColorScaleFactory.java b/src/main/java/org/igv/renderer/ColorScaleFactory.java index a1eac78fb4..48eb389b9d 100644 --- a/src/main/java/org/igv/renderer/ColorScaleFactory.java +++ b/src/main/java/org/igv/renderer/ColorScaleFactory.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import java.util.HashMap; diff --git a/src/main/java/org/igv/renderer/ContinuousColorScale.java b/src/main/java/org/igv/renderer/ContinuousColorScale.java index 015452bf5d..309b92005a 100644 --- a/src/main/java/org/igv/renderer/ContinuousColorScale.java +++ b/src/main/java/org/igv/renderer/ContinuousColorScale.java @@ -1,10 +1,5 @@ -/* -* To change this template, choose Tools | Templates -* and open the template in the editor. -*/ package org.igv.renderer; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.prefs.Constants; import org.igv.prefs.PreferencesManager; @@ -377,6 +372,15 @@ public ColorGradient(double min, double max, Color negColor, Color posColor) { posImage = createGradientImage(negColor, posColor); } + public void setMax(double max) { + this.max = max; + posImage = createGradientImage(minColor, maxColor); + } + + public double getMax() { + return max; + } + /** * Creates a gradient image given specified Color(s) * diff --git a/src/main/java/org/igv/renderer/DataRange.java b/src/main/java/org/igv/renderer/DataRange.java index 55601bde94..7ae5c6361f 100644 --- a/src/main/java/org/igv/renderer/DataRange.java +++ b/src/main/java/org/igv/renderer/DataRange.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import org.igv.session.Persistable; diff --git a/src/main/java/org/igv/renderer/DataRenderer.java b/src/main/java/org/igv/renderer/DataRenderer.java index e9d8bf7e2f..8f239e3f8e 100644 --- a/src/main/java/org/igv/renderer/DataRenderer.java +++ b/src/main/java/org/igv/renderer/DataRenderer.java @@ -10,7 +10,6 @@ package org.igv.renderer; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.Globals; diff --git a/src/main/java/org/igv/renderer/FeatureRenderer.java b/src/main/java/org/igv/renderer/FeatureRenderer.java index 163d4c887f..04da18904b 100644 --- a/src/main/java/org/igv/renderer/FeatureRenderer.java +++ b/src/main/java/org/igv/renderer/FeatureRenderer.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import org.igv.Globals; diff --git a/src/main/java/org/igv/renderer/GeneTrackRenderer.java b/src/main/java/org/igv/renderer/GeneTrackRenderer.java index 7c6ef41c11..b6a9d44051 100644 --- a/src/main/java/org/igv/renderer/GeneTrackRenderer.java +++ b/src/main/java/org/igv/renderer/GeneTrackRenderer.java @@ -1,10 +1,5 @@ -/* -* To change this template, choose Tools | Templates -* and open the template in the editor. -*/ package org.igv.renderer; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; diff --git a/src/main/java/org/igv/renderer/GisticTrackRenderer.java b/src/main/java/org/igv/renderer/GisticTrackRenderer.java index 8584dc7bbc..7f7c2e5221 100644 --- a/src/main/java/org/igv/renderer/GisticTrackRenderer.java +++ b/src/main/java/org/igv/renderer/GisticTrackRenderer.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import org.igv.feature.GisticScore; diff --git a/src/main/java/org/igv/renderer/GraphicUtils.java b/src/main/java/org/igv/renderer/GraphicUtils.java index c953f4a3be..778c4b25b9 100644 --- a/src/main/java/org/igv/renderer/GraphicUtils.java +++ b/src/main/java/org/igv/renderer/GraphicUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import org.igv.Globals; diff --git a/src/main/java/org/igv/renderer/MappedColorScale.java b/src/main/java/org/igv/renderer/MappedColorScale.java index 6ec6626957..9d6fc0bf42 100644 --- a/src/main/java/org/igv/renderer/MappedColorScale.java +++ b/src/main/java/org/igv/renderer/MappedColorScale.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; diff --git a/src/main/java/org/igv/renderer/Renderer.java b/src/main/java/org/igv/renderer/Renderer.java index d702567bee..3161c9a900 100644 --- a/src/main/java/org/igv/renderer/Renderer.java +++ b/src/main/java/org/igv/renderer/Renderer.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; diff --git a/src/main/java/org/igv/renderer/SequenceRenderer.java b/src/main/java/org/igv/renderer/SequenceRenderer.java index 9ac39e556e..9fbb37e4b5 100644 --- a/src/main/java/org/igv/renderer/SequenceRenderer.java +++ b/src/main/java/org/igv/renderer/SequenceRenderer.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; import org.igv.Globals; diff --git a/src/main/java/org/igv/renderer/SpliceJunctionRenderer.java b/src/main/java/org/igv/renderer/SpliceJunctionRenderer.java index 5a89603df4..b01843fd2a 100644 --- a/src/main/java/org/igv/renderer/SpliceJunctionRenderer.java +++ b/src/main/java/org/igv/renderer/SpliceJunctionRenderer.java @@ -1,6 +1,5 @@ package org.igv.renderer; -//~--- non-JDK imports -------------------------------------------------------- import htsjdk.tribble.Feature; import org.igv.Globals; diff --git a/src/main/java/org/igv/renderer/XYPlotRenderer.java b/src/main/java/org/igv/renderer/XYPlotRenderer.java index 166ecd518d..45f30b6264 100644 --- a/src/main/java/org/igv/renderer/XYPlotRenderer.java +++ b/src/main/java/org/igv/renderer/XYPlotRenderer.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.feature.LocusScore; import org.igv.prefs.IGVPreferences; diff --git a/src/main/java/org/igv/sam/Alignment.java b/src/main/java/org/igv/sam/Alignment.java index c1559a55b0..c89b8d27b9 100644 --- a/src/main/java/org/igv/sam/Alignment.java +++ b/src/main/java/org/igv/sam/Alignment.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import htsjdk.samtools.Cigar; diff --git a/src/main/java/org/igv/sam/AlignmentBlockImpl.java b/src/main/java/org/igv/sam/AlignmentBlockImpl.java index 8345a56721..ee08041ef8 100644 --- a/src/main/java/org/igv/sam/AlignmentBlockImpl.java +++ b/src/main/java/org/igv/sam/AlignmentBlockImpl.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; public class AlignmentBlockImpl implements AlignmentBlock { diff --git a/src/main/java/org/igv/sam/AlignmentPacker.java b/src/main/java/org/igv/sam/AlignmentPacker.java index 50c81afd20..ec02ced9d6 100644 --- a/src/main/java/org/igv/sam/AlignmentPacker.java +++ b/src/main/java/org/igv/sam/AlignmentPacker.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import htsjdk.samtools.SAMTag; diff --git a/src/main/java/org/igv/sam/CoverageTrack.java b/src/main/java/org/igv/sam/CoverageTrack.java index 3a8a5a559d..6c0448e1c6 100644 --- a/src/main/java/org/igv/sam/CoverageTrack.java +++ b/src/main/java/org/igv/sam/CoverageTrack.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import org.igv.Globals; diff --git a/src/main/java/org/igv/sam/DotAlignedAlignment.java b/src/main/java/org/igv/sam/DotAlignedAlignment.java index e1ff0029bf..6136f9ff3e 100644 --- a/src/main/java/org/igv/sam/DotAlignedAlignment.java +++ b/src/main/java/org/igv/sam/DotAlignedAlignment.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import org.igv.feature.LocusScore; diff --git a/src/main/java/org/igv/sam/EWigTrack.java b/src/main/java/org/igv/sam/EWigTrack.java index c51ea81f57..a8715fbdeb 100644 --- a/src/main/java/org/igv/sam/EWigTrack.java +++ b/src/main/java/org/igv/sam/EWigTrack.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import org.igv.feature.Locus; diff --git a/src/main/java/org/igv/sam/EmptyAlignmentIterator.java b/src/main/java/org/igv/sam/EmptyAlignmentIterator.java index abffe64428..45e1aa2496 100644 --- a/src/main/java/org/igv/sam/EmptyAlignmentIterator.java +++ b/src/main/java/org/igv/sam/EmptyAlignmentIterator.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import htsjdk.samtools.util.CloseableIterator; diff --git a/src/main/java/org/igv/sam/ReadMate.java b/src/main/java/org/igv/sam/ReadMate.java index 5629d0b2d5..293ceb6c8d 100644 --- a/src/main/java/org/igv/sam/ReadMate.java +++ b/src/main/java/org/igv/sam/ReadMate.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; diff --git a/src/main/java/org/igv/sam/ReducedMemoryAlignment.java b/src/main/java/org/igv/sam/ReducedMemoryAlignment.java index fa1291d07b..e672b8284e 100644 --- a/src/main/java/org/igv/sam/ReducedMemoryAlignment.java +++ b/src/main/java/org/igv/sam/ReducedMemoryAlignment.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import org.igv.logging.*; diff --git a/src/main/java/org/igv/sam/SAMAlignment.java b/src/main/java/org/igv/sam/SAMAlignment.java index d422d6cd94..a849ba3755 100644 --- a/src/main/java/org/igv/sam/SAMAlignment.java +++ b/src/main/java/org/igv/sam/SAMAlignment.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import htsjdk.samtools.*; diff --git a/src/main/java/org/igv/sam/reader/AlignmentParser.java b/src/main/java/org/igv/sam/reader/AlignmentParser.java index fc4efde09d..a77f3d8c97 100644 --- a/src/main/java/org/igv/sam/reader/AlignmentParser.java +++ b/src/main/java/org/igv/sam/reader/AlignmentParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.reader; diff --git a/src/main/java/org/igv/sam/reader/AlignmentReader.java b/src/main/java/org/igv/sam/reader/AlignmentReader.java old mode 100755 new mode 100644 index 891a2e480a..9629912825 --- a/src/main/java/org/igv/sam/reader/AlignmentReader.java +++ b/src/main/java/org/igv/sam/reader/AlignmentReader.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.reader; diff --git a/src/main/java/org/igv/sam/reader/DotAlignedCodec.java b/src/main/java/org/igv/sam/reader/DotAlignedCodec.java index b2f80bd9ad..892a2077aa 100644 --- a/src/main/java/org/igv/sam/reader/DotAlignedCodec.java +++ b/src/main/java/org/igv/sam/reader/DotAlignedCodec.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.reader; import org.igv.util.collections.SortingCollection; diff --git a/src/main/java/org/igv/sam/reader/DotAlignedParser.java b/src/main/java/org/igv/sam/reader/DotAlignedParser.java index 343760f8f9..7da86b4aa7 100644 --- a/src/main/java/org/igv/sam/reader/DotAlignedParser.java +++ b/src/main/java/org/igv/sam/reader/DotAlignedParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.reader; import org.igv.logging.*; diff --git a/src/main/java/org/igv/sam/reader/SAMReader.java b/src/main/java/org/igv/sam/reader/SAMReader.java index 6352a70420..786a9da099 100644 --- a/src/main/java/org/igv/sam/reader/SAMReader.java +++ b/src/main/java/org/igv/sam/reader/SAMReader.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.reader; import htsjdk.samtools.*; diff --git a/src/main/java/org/igv/sam/reader/SamUtils.java b/src/main/java/org/igv/sam/reader/SamUtils.java index 30a1357307..c360fa3126 100644 --- a/src/main/java/org/igv/sam/reader/SamUtils.java +++ b/src/main/java/org/igv/sam/reader/SamUtils.java @@ -1,6 +1,5 @@ package org.igv.sam.reader; -//~--- non-JDK imports -------------------------------------------------------- //~--- JDK imports ------------------------------------------------------------ diff --git a/src/main/java/org/igv/sashimi/SashimiJunctionRenderer.java b/src/main/java/org/igv/sashimi/SashimiJunctionRenderer.java index 541369dec8..0ea75cd2a7 100644 --- a/src/main/java/org/igv/sashimi/SashimiJunctionRenderer.java +++ b/src/main/java/org/igv/sashimi/SashimiJunctionRenderer.java @@ -1,6 +1,5 @@ package org.igv.sashimi; -//~--- non-JDK imports -------------------------------------------------------- import htsjdk.tribble.Feature; import org.igv.Globals; diff --git a/src/main/java/org/igv/seg/SegmentFileParser.java b/src/main/java/org/igv/seg/SegmentFileParser.java index fd783db79d..487545b575 100644 --- a/src/main/java/org/igv/seg/SegmentFileParser.java +++ b/src/main/java/org/igv/seg/SegmentFileParser.java @@ -1,6 +1,5 @@ package org.igv.seg; -//~--- non-JDK imports -------------------------------------------------------- import htsjdk.tribble.readers.AsciiLineReader; import org.igv.Globals; diff --git a/src/main/java/org/igv/seg/SegmentedDataSet.java b/src/main/java/org/igv/seg/SegmentedDataSet.java index 4c8158f30c..0ce8c6aadc 100644 --- a/src/main/java/org/igv/seg/SegmentedDataSet.java +++ b/src/main/java/org/igv/seg/SegmentedDataSet.java @@ -5,7 +5,6 @@ */ package org.igv.seg; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.Globals; import org.igv.feature.FeatureUtils; diff --git a/src/main/java/org/igv/session/RendererFactory.java b/src/main/java/org/igv/session/RendererFactory.java index a778acc2fc..f46bef265e 100644 --- a/src/main/java/org/igv/session/RendererFactory.java +++ b/src/main/java/org/igv/session/RendererFactory.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.session; import org.igv.renderer.*; diff --git a/src/main/java/org/igv/tdf/Accumulator.java b/src/main/java/org/igv/tdf/Accumulator.java index 8b7898e8ec..03a71bc7de 100644 --- a/src/main/java/org/igv/tdf/Accumulator.java +++ b/src/main/java/org/igv/tdf/Accumulator.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.apache.commons.math3.stat.StatUtils; diff --git a/src/main/java/org/igv/tdf/BufferedByteWriter.java b/src/main/java/org/igv/tdf/BufferedByteWriter.java index 0ec7a5c589..07f9e92aed 100644 --- a/src/main/java/org/igv/tdf/BufferedByteWriter.java +++ b/src/main/java/org/igv/tdf/BufferedByteWriter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import java.io.ByteArrayOutputStream; diff --git a/src/main/java/org/igv/tdf/IBFAttributes.java b/src/main/java/org/igv/tdf/IBFAttributes.java index cebd376dec..376661da4a 100644 --- a/src/main/java/org/igv/tdf/IBFAttributes.java +++ b/src/main/java/org/igv/tdf/IBFAttributes.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; diff --git a/src/main/java/org/igv/tdf/IBFBin.java b/src/main/java/org/igv/tdf/IBFBin.java index c8bd8bb716..b529110c0a 100644 --- a/src/main/java/org/igv/tdf/IBFBin.java +++ b/src/main/java/org/igv/tdf/IBFBin.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; diff --git a/src/main/java/org/igv/tdf/IBFIndex.java b/src/main/java/org/igv/tdf/IBFIndex.java index c88beb92ba..cd29bf5cca 100644 --- a/src/main/java/org/igv/tdf/IBFIndex.java +++ b/src/main/java/org/igv/tdf/IBFIndex.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; diff --git a/src/main/java/org/igv/tdf/LinearIndex.java b/src/main/java/org/igv/tdf/LinearIndex.java index 7cb21bdb55..8fc709e323 100644 --- a/src/main/java/org/igv/tdf/LinearIndex.java +++ b/src/main/java/org/igv/tdf/LinearIndex.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; diff --git a/src/main/java/org/igv/tdf/TDFBedTile.java b/src/main/java/org/igv/tdf/TDFBedTile.java index 0042e87a90..6932fbee84 100644 --- a/src/main/java/org/igv/tdf/TDFBedTile.java +++ b/src/main/java/org/igv/tdf/TDFBedTile.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.util.StringUtils; diff --git a/src/main/java/org/igv/tdf/TDFDataSource.java b/src/main/java/org/igv/tdf/TDFDataSource.java index 57ee55502b..c90a20f2c0 100644 --- a/src/main/java/org/igv/tdf/TDFDataSource.java +++ b/src/main/java/org/igv/tdf/TDFDataSource.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.feature.genome.ChromAliasManager; diff --git a/src/main/java/org/igv/tdf/TDFDataset.java b/src/main/java/org/igv/tdf/TDFDataset.java index 5674f39910..581cee07c2 100644 --- a/src/main/java/org/igv/tdf/TDFDataset.java +++ b/src/main/java/org/igv/tdf/TDFDataset.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.util.StringUtils; diff --git a/src/main/java/org/igv/tdf/TDFEntity.java b/src/main/java/org/igv/tdf/TDFEntity.java index d9187689a0..22ce657e8d 100644 --- a/src/main/java/org/igv/tdf/TDFEntity.java +++ b/src/main/java/org/igv/tdf/TDFEntity.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.util.StringUtils; diff --git a/src/main/java/org/igv/tdf/TDFFixedTile.java b/src/main/java/org/igv/tdf/TDFFixedTile.java index aa90f32fc7..fef34b3cef 100644 --- a/src/main/java/org/igv/tdf/TDFFixedTile.java +++ b/src/main/java/org/igv/tdf/TDFFixedTile.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import java.io.IOException; diff --git a/src/main/java/org/igv/tdf/TDFGroup.java b/src/main/java/org/igv/tdf/TDFGroup.java index 12ad6f7941..a476583db6 100644 --- a/src/main/java/org/igv/tdf/TDFGroup.java +++ b/src/main/java/org/igv/tdf/TDFGroup.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import java.io.IOException; diff --git a/src/main/java/org/igv/tdf/TDFReader.java b/src/main/java/org/igv/tdf/TDFReader.java old mode 100755 new mode 100644 index 0e4979ef12..2d18a697aa --- a/src/main/java/org/igv/tdf/TDFReader.java +++ b/src/main/java/org/igv/tdf/TDFReader.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import htsjdk.samtools.seekablestream.SeekableStream; diff --git a/src/main/java/org/igv/tdf/TDFTile.java b/src/main/java/org/igv/tdf/TDFTile.java index fd03569224..f12e68f696 100644 --- a/src/main/java/org/igv/tdf/TDFTile.java +++ b/src/main/java/org/igv/tdf/TDFTile.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; diff --git a/src/main/java/org/igv/tdf/TDFUtils.java b/src/main/java/org/igv/tdf/TDFUtils.java index 46ab308381..22a2588627 100644 --- a/src/main/java/org/igv/tdf/TDFUtils.java +++ b/src/main/java/org/igv/tdf/TDFUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.Globals; diff --git a/src/main/java/org/igv/tdf/TDFVaryTile.java b/src/main/java/org/igv/tdf/TDFVaryTile.java index 45ebc0dcbb..6fb5ecffb5 100644 --- a/src/main/java/org/igv/tdf/TDFVaryTile.java +++ b/src/main/java/org/igv/tdf/TDFVaryTile.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import java.io.IOException; diff --git a/src/main/java/org/igv/tdf/TDFWriter.java b/src/main/java/org/igv/tdf/TDFWriter.java index 6d56d76f03..6bb7e99477 100644 --- a/src/main/java/org/igv/tdf/TDFWriter.java +++ b/src/main/java/org/igv/tdf/TDFWriter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.logging.*; diff --git a/src/main/java/org/igv/tdf/TileFactory.java b/src/main/java/org/igv/tdf/TileFactory.java index 29ed8e72d1..702af96c91 100644 --- a/src/main/java/org/igv/tdf/TileFactory.java +++ b/src/main/java/org/igv/tdf/TileFactory.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; diff --git a/src/main/java/org/igv/tools/CommandLineStatusMonitor.java b/src/main/java/org/igv/tools/CommandLineStatusMonitor.java index adb4527ae8..632e3ca246 100644 --- a/src/main/java/org/igv/tools/CommandLineStatusMonitor.java +++ b/src/main/java/org/igv/tools/CommandLineStatusMonitor.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; import java.io.PrintStream; diff --git a/src/main/java/org/igv/tools/GenomeDesc.java b/src/main/java/org/igv/tools/GenomeDesc.java index 20c613c54d..3add40ce1e 100644 --- a/src/main/java/org/igv/tools/GenomeDesc.java +++ b/src/main/java/org/igv/tools/GenomeDesc.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; import java.util.List; diff --git a/src/main/java/org/igv/tools/IgvTools.java b/src/main/java/org/igv/tools/IgvTools.java index d956b7158f..425595b90e 100644 --- a/src/main/java/org/igv/tools/IgvTools.java +++ b/src/main/java/org/igv/tools/IgvTools.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; diff --git a/src/main/java/org/igv/tools/ListAccumulator.java b/src/main/java/org/igv/tools/ListAccumulator.java index b4f7c915c1..6ab703643d 100644 --- a/src/main/java/org/igv/tools/ListAccumulator.java +++ b/src/main/java/org/igv/tools/ListAccumulator.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; import org.igv.util.collections.DoubleArrayList; diff --git a/src/main/java/org/igv/tools/PreprocessingException.java b/src/main/java/org/igv/tools/PreprocessingException.java index 3db05eb215..93ec315645 100644 --- a/src/main/java/org/igv/tools/PreprocessingException.java +++ b/src/main/java/org/igv/tools/PreprocessingException.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; diff --git a/src/main/java/org/igv/tools/StatusMonitor.java b/src/main/java/org/igv/tools/StatusMonitor.java index d62de67e3a..81fb9665e9 100644 --- a/src/main/java/org/igv/tools/StatusMonitor.java +++ b/src/main/java/org/igv/tools/StatusMonitor.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; diff --git a/src/main/java/org/igv/tools/TestFileGenerator.java b/src/main/java/org/igv/tools/TestFileGenerator.java index cafe3f8560..66f7fac796 100644 --- a/src/main/java/org/igv/tools/TestFileGenerator.java +++ b/src/main/java/org/igv/tools/TestFileGenerator.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; import org.igv.logging.*; diff --git a/src/main/java/org/igv/tools/UCSCUtils.java b/src/main/java/org/igv/tools/UCSCUtils.java index 78476bdc99..af3f41389f 100644 --- a/src/main/java/org/igv/tools/UCSCUtils.java +++ b/src/main/java/org/igv/tools/UCSCUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; import org.igv.logging.*; diff --git a/src/main/java/org/igv/tools/parsers/AbstractParser.java b/src/main/java/org/igv/tools/parsers/AbstractParser.java index c35a9824e3..970cc23fee 100644 --- a/src/main/java/org/igv/tools/parsers/AbstractParser.java +++ b/src/main/java/org/igv/tools/parsers/AbstractParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.parsers; diff --git a/src/main/java/org/igv/tools/parsers/CNParser.java b/src/main/java/org/igv/tools/parsers/CNParser.java index c2fe52137b..6a607b4a91 100644 --- a/src/main/java/org/igv/tools/parsers/CNParser.java +++ b/src/main/java/org/igv/tools/parsers/CNParser.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.parsers; import org.igv.logging.*; diff --git a/src/main/java/org/igv/tools/parsers/DataConsumer.java b/src/main/java/org/igv/tools/parsers/DataConsumer.java index 23add440bf..b1fac6be9b 100644 --- a/src/main/java/org/igv/tools/parsers/DataConsumer.java +++ b/src/main/java/org/igv/tools/parsers/DataConsumer.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.parsers; import org.igv.track.TrackType; diff --git a/src/main/java/org/igv/tools/parsers/ToolsWiggleParser.java b/src/main/java/org/igv/tools/parsers/ToolsWiggleParser.java index fa27268ead..a9a5af4a06 100644 --- a/src/main/java/org/igv/tools/parsers/ToolsWiggleParser.java +++ b/src/main/java/org/igv/tools/parsers/ToolsWiggleParser.java @@ -1,6 +1,5 @@ package org.igv.tools.parsers; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.Globals; diff --git a/src/main/java/org/igv/tools/parsers/UnsortedException.java b/src/main/java/org/igv/tools/parsers/UnsortedException.java index 9d7250689b..d463eca598 100644 --- a/src/main/java/org/igv/tools/parsers/UnsortedException.java +++ b/src/main/java/org/igv/tools/parsers/UnsortedException.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.parsers; diff --git a/src/main/java/org/igv/tools/sort/BedSorter.java b/src/main/java/org/igv/tools/sort/BedSorter.java index f685a0dcf6..98633a98a5 100644 --- a/src/main/java/org/igv/tools/sort/BedSorter.java +++ b/src/main/java/org/igv/tools/sort/BedSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.sort; import htsjdk.tribble.readers.AsciiLineReader; diff --git a/src/main/java/org/igv/tools/sort/CNSorter.java b/src/main/java/org/igv/tools/sort/CNSorter.java index 0d6828656d..05459bc8e7 100644 --- a/src/main/java/org/igv/tools/sort/CNSorter.java +++ b/src/main/java/org/igv/tools/sort/CNSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.sort; import org.igv.logging.*; diff --git a/src/main/java/org/igv/tools/sort/GenericSorter.java b/src/main/java/org/igv/tools/sort/GenericSorter.java index a839a58748..24bd931873 100644 --- a/src/main/java/org/igv/tools/sort/GenericSorter.java +++ b/src/main/java/org/igv/tools/sort/GenericSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.sort; import htsjdk.tribble.readers.AsciiLineReader; diff --git a/src/main/java/org/igv/tools/sort/InteractionSorter.java b/src/main/java/org/igv/tools/sort/InteractionSorter.java index 514dbe1f9b..85bb87c4ae 100644 --- a/src/main/java/org/igv/tools/sort/InteractionSorter.java +++ b/src/main/java/org/igv/tools/sort/InteractionSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.sort; import htsjdk.tribble.readers.AsciiLineReader; diff --git a/src/main/java/org/igv/tools/sort/RefgeneSorter.java b/src/main/java/org/igv/tools/sort/RefgeneSorter.java index f9257c9523..252c953853 100644 --- a/src/main/java/org/igv/tools/sort/RefgeneSorter.java +++ b/src/main/java/org/igv/tools/sort/RefgeneSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.sort; import htsjdk.tribble.readers.AsciiLineReader; diff --git a/src/main/java/org/igv/tools/sort/SAMSorter.java b/src/main/java/org/igv/tools/sort/SAMSorter.java index d72966266f..be066c25b0 100644 --- a/src/main/java/org/igv/tools/sort/SAMSorter.java +++ b/src/main/java/org/igv/tools/sort/SAMSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools.sort; import htsjdk.tribble.readers.AsciiLineReader; diff --git a/src/main/java/org/igv/track/AbstractTrack.java b/src/main/java/org/igv/track/AbstractTrack.java index da7b8b77a1..6b69a8f5de 100644 --- a/src/main/java/org/igv/track/AbstractTrack.java +++ b/src/main/java/org/igv/track/AbstractTrack.java @@ -1,6 +1,5 @@ package org.igv.track; -//~--- non-JDK imports -------------------------------------------------------- import htsjdk.tribble.Feature; import org.igv.Globals; diff --git a/src/main/java/org/igv/track/GisticTrack.java b/src/main/java/org/igv/track/GisticTrack.java index 51330f74f8..06c92d3b84 100644 --- a/src/main/java/org/igv/track/GisticTrack.java +++ b/src/main/java/org/igv/track/GisticTrack.java @@ -8,7 +8,6 @@ */ package org.igv.track; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.feature.IGVFeature; diff --git a/src/main/java/org/igv/track/RegionScoreType.java b/src/main/java/org/igv/track/RegionScoreType.java index 02974352be..b3fddb932f 100644 --- a/src/main/java/org/igv/track/RegionScoreType.java +++ b/src/main/java/org/igv/track/RegionScoreType.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; diff --git a/src/main/java/org/igv/track/RenderContext.java b/src/main/java/org/igv/track/RenderContext.java index b4d7c5048e..bbc7d8d7e6 100644 --- a/src/main/java/org/igv/track/RenderContext.java +++ b/src/main/java/org/igv/track/RenderContext.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; import org.igv.prefs.PreferencesManager; diff --git a/src/main/java/org/igv/track/SequenceTrack.java b/src/main/java/org/igv/track/SequenceTrack.java index cd2891b372..1a6ad0ac95 100644 --- a/src/main/java/org/igv/track/SequenceTrack.java +++ b/src/main/java/org/igv/track/SequenceTrack.java @@ -1,6 +1,5 @@ package org.igv.track; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.event.IGVEvent; import org.igv.logging.*; diff --git a/src/main/java/org/igv/track/TestUtils.java b/src/main/java/org/igv/track/TestUtils.java index 1f34d92fca..807c4599af 100644 --- a/src/main/java/org/igv/track/TestUtils.java +++ b/src/main/java/org/igv/track/TestUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; diff --git a/src/main/java/org/igv/track/Track.java b/src/main/java/org/igv/track/Track.java index f8c39b84fb..d2490a85ba 100644 --- a/src/main/java/org/igv/track/Track.java +++ b/src/main/java/org/igv/track/Track.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; diff --git a/src/main/java/org/igv/track/TrackGroup.java b/src/main/java/org/igv/track/TrackGroup.java index 565fdf3159..9d70ceca86 100644 --- a/src/main/java/org/igv/track/TrackGroup.java +++ b/src/main/java/org/igv/track/TrackGroup.java @@ -1,7 +1,3 @@ -/* -* To change this template, choose Tools | Templates -* and open the template in the editor. - */ package org.igv.track; //~--- JDK imports ------------------------------------------------------------ diff --git a/src/main/java/org/igv/track/TrackReader.java b/src/main/java/org/igv/track/TrackReader.java index 9eca9bb4c2..26a655f4de 100644 --- a/src/main/java/org/igv/track/TrackReader.java +++ b/src/main/java/org/igv/track/TrackReader.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; diff --git a/src/main/java/org/igv/track/TrackType.java b/src/main/java/org/igv/track/TrackType.java index 809195cdca..be21c180d5 100644 --- a/src/main/java/org/igv/track/TrackType.java +++ b/src/main/java/org/igv/track/TrackType.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; diff --git a/src/main/java/org/igv/track/WindowFunction.java b/src/main/java/org/igv/track/WindowFunction.java index 6be7f66ddf..47508b1cbf 100644 --- a/src/main/java/org/igv/track/WindowFunction.java +++ b/src/main/java/org/igv/track/WindowFunction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.track; diff --git a/src/main/java/org/igv/ui/AbstractDataPanelTool.java b/src/main/java/org/igv/ui/AbstractDataPanelTool.java index 0b8accad5f..a28f9fd083 100644 --- a/src/main/java/org/igv/ui/AbstractDataPanelTool.java +++ b/src/main/java/org/igv/ui/AbstractDataPanelTool.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; diff --git a/src/main/java/org/igv/ui/AttributeCheckList.java b/src/main/java/org/igv/ui/AttributeCheckList.java index 21f6abfd8d..c3ed6de28c 100644 --- a/src/main/java/org/igv/ui/AttributeCheckList.java +++ b/src/main/java/org/igv/ui/AttributeCheckList.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; diff --git a/src/main/java/org/igv/ui/DefaultExceptionHandler.java b/src/main/java/org/igv/ui/DefaultExceptionHandler.java index cdd540e7fa..9e5b43636d 100644 --- a/src/main/java/org/igv/ui/DefaultExceptionHandler.java +++ b/src/main/java/org/igv/ui/DefaultExceptionHandler.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/FontManager.java b/src/main/java/org/igv/ui/FontManager.java index 64dc496176..df90ae4b14 100644 --- a/src/main/java/org/igv/ui/FontManager.java +++ b/src/main/java/org/igv/ui/FontManager.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; diff --git a/src/main/java/org/igv/ui/GlobalKeyDispatcher.java b/src/main/java/org/igv/ui/GlobalKeyDispatcher.java index 443c93ce21..0624ea31cc 100644 --- a/src/main/java/org/igv/ui/GlobalKeyDispatcher.java +++ b/src/main/java/org/igv/ui/GlobalKeyDispatcher.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; import htsjdk.tribble.Feature; diff --git a/src/main/java/org/igv/ui/HeatmapScaleDialog.java b/src/main/java/org/igv/ui/HeatmapScaleDialog.java index 5e5356e77d..dcfd59322f 100644 --- a/src/main/java/org/igv/ui/HeatmapScaleDialog.java +++ b/src/main/java/org/igv/ui/HeatmapScaleDialog.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ /* * HeatmapScaleDialog.java diff --git a/src/main/java/org/igv/ui/ResourceFileBuilder.java b/src/main/java/org/igv/ui/ResourceFileBuilder.java index ba278bc029..93bb9ab857 100644 --- a/src/main/java/org/igv/ui/ResourceFileBuilder.java +++ b/src/main/java/org/igv/ui/ResourceFileBuilder.java @@ -1,6 +1,5 @@ package org.igv.ui; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.ui.color.ColorUtilities; diff --git a/src/main/java/org/igv/ui/ResourceFileBuilderDialog.java b/src/main/java/org/igv/ui/ResourceFileBuilderDialog.java index 928130ea51..8168d49391 100644 --- a/src/main/java/org/igv/ui/ResourceFileBuilderDialog.java +++ b/src/main/java/org/igv/ui/ResourceFileBuilderDialog.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; import com.jidesoft.plaf.LookAndFeelFactory; diff --git a/src/main/java/org/igv/ui/UserDefinedGenomeCheckList.java b/src/main/java/org/igv/ui/UserDefinedGenomeCheckList.java index 19b0f13ddc..008419ee83 100644 --- a/src/main/java/org/igv/ui/UserDefinedGenomeCheckList.java +++ b/src/main/java/org/igv/ui/UserDefinedGenomeCheckList.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui; diff --git a/src/main/java/org/igv/ui/action/ClearRegionsMenuAction.java b/src/main/java/org/igv/ui/action/ClearRegionsMenuAction.java index 66dca678e1..7b0990ebc6 100644 --- a/src/main/java/org/igv/ui/action/ClearRegionsMenuAction.java +++ b/src/main/java/org/igv/ui/action/ClearRegionsMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/ExportRegionsMenuAction.java b/src/main/java/org/igv/ui/action/ExportRegionsMenuAction.java index 8439838c56..08dc272540 100644 --- a/src/main/java/org/igv/ui/action/ExportRegionsMenuAction.java +++ b/src/main/java/org/igv/ui/action/ExportRegionsMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/FilterTracksMenuAction.java b/src/main/java/org/igv/ui/action/FilterTracksMenuAction.java index bfcdacca07..4514e57e9f 100644 --- a/src/main/java/org/igv/ui/action/FilterTracksMenuAction.java +++ b/src/main/java/org/igv/ui/action/FilterTracksMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.event.IGVEventBus; diff --git a/src/main/java/org/igv/ui/action/FitDataToWindowMenuAction.java b/src/main/java/org/igv/ui/action/FitDataToWindowMenuAction.java index 73c9357362..cb540479c9 100644 --- a/src/main/java/org/igv/ui/action/FitDataToWindowMenuAction.java +++ b/src/main/java/org/igv/ui/action/FitDataToWindowMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/GroupTracksMenuAction.java b/src/main/java/org/igv/ui/action/GroupTracksMenuAction.java index 2e5fb33b9d..66fcca0aa4 100644 --- a/src/main/java/org/igv/ui/action/GroupTracksMenuAction.java +++ b/src/main/java/org/igv/ui/action/GroupTracksMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.ui.AttributeSelectionDialog; diff --git a/src/main/java/org/igv/ui/action/ImportRegionsMenuAction.java b/src/main/java/org/igv/ui/action/ImportRegionsMenuAction.java index 3d08722ad9..2c5b2c07bc 100644 --- a/src/main/java/org/igv/ui/action/ImportRegionsMenuAction.java +++ b/src/main/java/org/igv/ui/action/ImportRegionsMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/LoadFilesMenuAction.java b/src/main/java/org/igv/ui/action/LoadFilesMenuAction.java index 7715c6ed1d..28322cd2d4 100644 --- a/src/main/java/org/igv/ui/action/LoadFilesMenuAction.java +++ b/src/main/java/org/igv/ui/action/LoadFilesMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.LogManager; diff --git a/src/main/java/org/igv/ui/action/LoadFromDatabaseAction.java b/src/main/java/org/igv/ui/action/LoadFromDatabaseAction.java index 218025816c..7e296d64d2 100644 --- a/src/main/java/org/igv/ui/action/LoadFromDatabaseAction.java +++ b/src/main/java/org/igv/ui/action/LoadFromDatabaseAction.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.prefs.IGVPreferences; diff --git a/src/main/java/org/igv/ui/action/LoadFromServerAction.java b/src/main/java/org/igv/ui/action/LoadFromServerAction.java index 3db2aed463..f85d05c9ba 100644 --- a/src/main/java/org/igv/ui/action/LoadFromServerAction.java +++ b/src/main/java/org/igv/ui/action/LoadFromServerAction.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.feature.genome.GenomeManager; diff --git a/src/main/java/org/igv/ui/action/LoadFromURLMenuAction.java b/src/main/java/org/igv/ui/action/LoadFromURLMenuAction.java index 219173df7e..06876da92d 100644 --- a/src/main/java/org/igv/ui/action/LoadFromURLMenuAction.java +++ b/src/main/java/org/igv/ui/action/LoadFromURLMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.feature.genome.Genome; diff --git a/src/main/java/org/igv/ui/action/NavigateRegionsMenuAction.java b/src/main/java/org/igv/ui/action/NavigateRegionsMenuAction.java index 27d359cc82..2d564435b4 100644 --- a/src/main/java/org/igv/ui/action/NavigateRegionsMenuAction.java +++ b/src/main/java/org/igv/ui/action/NavigateRegionsMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/NewSessionMenuAction.java b/src/main/java/org/igv/ui/action/NewSessionMenuAction.java index 90b3cd39a3..a7aa6172e7 100644 --- a/src/main/java/org/igv/ui/action/NewSessionMenuAction.java +++ b/src/main/java/org/igv/ui/action/NewSessionMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.ui.IGV; diff --git a/src/main/java/org/igv/ui/action/OpenSessionMenuAction.java b/src/main/java/org/igv/ui/action/OpenSessionMenuAction.java index d09e796719..4a0b5f6fa7 100644 --- a/src/main/java/org/igv/ui/action/OpenSessionMenuAction.java +++ b/src/main/java/org/igv/ui/action/OpenSessionMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.logging.LogManager; diff --git a/src/main/java/org/igv/ui/action/OverlayTracksMenuAction.java b/src/main/java/org/igv/ui/action/OverlayTracksMenuAction.java index 1803992d83..c317eefd91 100644 --- a/src/main/java/org/igv/ui/action/OverlayTracksMenuAction.java +++ b/src/main/java/org/igv/ui/action/OverlayTracksMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.track.DataTrack; diff --git a/src/main/java/org/igv/ui/action/ReloadSessionMenuAction.java b/src/main/java/org/igv/ui/action/ReloadSessionMenuAction.java index 17d9469e71..e475a8f562 100644 --- a/src/main/java/org/igv/ui/action/ReloadSessionMenuAction.java +++ b/src/main/java/org/igv/ui/action/ReloadSessionMenuAction.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.ui.IGV; diff --git a/src/main/java/org/igv/ui/action/ReloadTracksMenuAction.java b/src/main/java/org/igv/ui/action/ReloadTracksMenuAction.java index f45db1980b..6ef9381684 100644 --- a/src/main/java/org/igv/ui/action/ReloadTracksMenuAction.java +++ b/src/main/java/org/igv/ui/action/ReloadTracksMenuAction.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.session.Session; diff --git a/src/main/java/org/igv/ui/action/RenameTracksMenuAction.java b/src/main/java/org/igv/ui/action/RenameTracksMenuAction.java index a030f55ef4..973f1c35ba 100644 --- a/src/main/java/org/igv/ui/action/RenameTracksMenuAction.java +++ b/src/main/java/org/igv/ui/action/RenameTracksMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.prefs.Constants; diff --git a/src/main/java/org/igv/ui/action/ResetPreferencesAction.java b/src/main/java/org/igv/ui/action/ResetPreferencesAction.java index 7e859599f8..ea8009d3dd 100644 --- a/src/main/java/org/igv/ui/action/ResetPreferencesAction.java +++ b/src/main/java/org/igv/ui/action/ResetPreferencesAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.ui.IGV; diff --git a/src/main/java/org/igv/ui/action/SaveSessionMenuAction.java b/src/main/java/org/igv/ui/action/SaveSessionMenuAction.java index 8267e73d0b..9c139b193b 100644 --- a/src/main/java/org/igv/ui/action/SaveSessionMenuAction.java +++ b/src/main/java/org/igv/ui/action/SaveSessionMenuAction.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.DirectoryManager; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/SearchCommand.java b/src/main/java/org/igv/ui/action/SearchCommand.java index 7f565c8c6a..27e844485a 100644 --- a/src/main/java/org/igv/ui/action/SearchCommand.java +++ b/src/main/java/org/igv/ui/action/SearchCommand.java @@ -1,6 +1,5 @@ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import htsjdk.tribble.Feature; import htsjdk.tribble.NamedFeature; diff --git a/src/main/java/org/igv/ui/action/SelectHubTracksAction.java b/src/main/java/org/igv/ui/action/SelectHubTracksAction.java index 512af33d7f..91b33efe0b 100644 --- a/src/main/java/org/igv/ui/action/SelectHubTracksAction.java +++ b/src/main/java/org/igv/ui/action/SelectHubTracksAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.feature.genome.load.TrackConfig; diff --git a/src/main/java/org/igv/ui/action/SetTrackHeightMenuAction.java b/src/main/java/org/igv/ui/action/SetTrackHeightMenuAction.java index 030fa07b39..98b84e6869 100644 --- a/src/main/java/org/igv/ui/action/SetTrackHeightMenuAction.java +++ b/src/main/java/org/igv/ui/action/SetTrackHeightMenuAction.java @@ -1,10 +1,5 @@ -/* -* To change this template, choose Tools | Templates -* and open the template in the editor. -*/ package org.igv.ui.action; -//~--- non-JDK imports -------------------------------------------------------- import org.apache.commons.math3.stat.StatUtils; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/action/SortTracksMenuAction.java b/src/main/java/org/igv/ui/action/SortTracksMenuAction.java index c4b5f6f96a..ff6d3dd644 100644 --- a/src/main/java/org/igv/ui/action/SortTracksMenuAction.java +++ b/src/main/java/org/igv/ui/action/SortTracksMenuAction.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.action; import org.igv.track.AttributeManager; diff --git a/src/main/java/org/igv/ui/panel/AttributeHeaderPanel.java b/src/main/java/org/igv/ui/panel/AttributeHeaderPanel.java index 3ea297364a..5b217d7f8f 100644 --- a/src/main/java/org/igv/ui/panel/AttributeHeaderPanel.java +++ b/src/main/java/org/igv/ui/panel/AttributeHeaderPanel.java @@ -9,7 +9,6 @@ package org.igv.ui.panel; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.Globals; import org.igv.prefs.Constants; diff --git a/src/main/java/org/igv/ui/panel/AttributePanel.java b/src/main/java/org/igv/ui/panel/AttributePanel.java index 3ed04ffe7f..4bdf2b867b 100644 --- a/src/main/java/org/igv/ui/panel/AttributePanel.java +++ b/src/main/java/org/igv/ui/panel/AttributePanel.java @@ -8,7 +8,6 @@ */ package org.igv.ui.panel; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.LogManager; import org.igv.logging.Logger; diff --git a/src/main/java/org/igv/ui/panel/CytobandPanel.java b/src/main/java/org/igv/ui/panel/CytobandPanel.java index 5a96653d49..23d251f440 100644 --- a/src/main/java/org/igv/ui/panel/CytobandPanel.java +++ b/src/main/java/org/igv/ui/panel/CytobandPanel.java @@ -8,7 +8,6 @@ */ package org.igv.ui.panel; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.Globals; import org.igv.event.IGVEventBus; diff --git a/src/main/java/org/igv/ui/panel/DataPanel.java b/src/main/java/org/igv/ui/panel/DataPanel.java index 57ffed9c6b..dfce739103 100644 --- a/src/main/java/org/igv/ui/panel/DataPanel.java +++ b/src/main/java/org/igv/ui/panel/DataPanel.java @@ -144,10 +144,6 @@ public void paintComponent(final Graphics g) { drawAllRegions(g); - - long dt = System.currentTimeMillis() - lastPaintTime; - PanTool.repaintTime(dt); - } catch (Exception e) { MessageUtils.showMessage("Unexpected error repainting view. See igv.log for details."); log.error("Error painting DataPanel", e); diff --git a/src/main/java/org/igv/ui/panel/DataPanelPainter.java b/src/main/java/org/igv/ui/panel/DataPanelPainter.java index 1928fe3e89..1cb118c652 100644 --- a/src/main/java/org/igv/ui/panel/DataPanelPainter.java +++ b/src/main/java/org/igv/ui/panel/DataPanelPainter.java @@ -1,12 +1,7 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.sam.AlignmentTrack; diff --git a/src/main/java/org/igv/ui/panel/IGVPanel.java b/src/main/java/org/igv/ui/panel/IGVPanel.java index b687d348ae..9c65b3b7b2 100644 --- a/src/main/java/org/igv/ui/panel/IGVPanel.java +++ b/src/main/java/org/igv/ui/panel/IGVPanel.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import org.igv.logging.*; diff --git a/src/main/java/org/igv/ui/panel/MouseableRegion.java b/src/main/java/org/igv/ui/panel/MouseableRegion.java index 9400250159..a70fee064d 100644 --- a/src/main/java/org/igv/ui/panel/MouseableRegion.java +++ b/src/main/java/org/igv/ui/panel/MouseableRegion.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import org.igv.track.Track; diff --git a/src/main/java/org/igv/ui/panel/NameHeaderPanel.java b/src/main/java/org/igv/ui/panel/NameHeaderPanel.java index be2288bc91..760161a468 100644 --- a/src/main/java/org/igv/ui/panel/NameHeaderPanel.java +++ b/src/main/java/org/igv/ui/panel/NameHeaderPanel.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import org.igv.Globals; diff --git a/src/main/java/org/igv/ui/panel/PanTool.java b/src/main/java/org/igv/ui/panel/PanTool.java index e00433b842..c0302d7177 100644 --- a/src/main/java/org/igv/ui/panel/PanTool.java +++ b/src/main/java/org/igv/ui/panel/PanTool.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; -//~--- non-JDK imports -------------------------------------------------------- import org.apache.commons.math3.stat.StatUtils; import org.igv.ui.AbstractDataPanelTool; @@ -24,15 +19,10 @@ public class PanTool extends AbstractDataPanelTool { private static int throttleTimeMS = 50; - private static double [] repaintTimes = new double[100]; - private static int repaintTimeCount = 0; - private int previousYDirection = 0; // Drag Directions: 1=up, 0=none 0r -1=down - //private int lastMousePressedY; private int cumulativeDeltaX; private int cumulativeDeltaY; private Point lastMousePoint; - //private JViewport viewport; private JScrollBar verticalScrollBar; private boolean isDragging = false; private long lastDragEventTime = 0; @@ -44,25 +34,14 @@ public PanTool(DataPanel owner) { setName("Pan"); if (owner != null) { verticalScrollBar = owner.getVerticalScrollbar(); - Container parentContainer = owner.getParent(); - if (parentContainer != null) { - Container parentOfParent = parentContainer.getParent(); - if ((parentOfParent != null) && (parentOfParent instanceof JViewport)) { - //viewport = (JViewport) parentOfParent; - } - } } } - @Override public Cursor getCursor() { return Cursor.getDefaultCursor(); } - public Point getLastMousePoint() { - return lastMousePoint; - } @Override public void mousePressed(final MouseEvent e) { @@ -74,7 +53,6 @@ public void mousePressed(final MouseEvent e) { lastMousePoint = e.getPoint(); cumulativeDeltaX = 0; cumulativeDeltaY = 0; - } public void setReferenceFrame(ReferenceFrame frame) { @@ -111,11 +89,9 @@ final public void mouseDragged(final MouseEvent e) { return; } - //System.out.println("T=" + ctr); lastDragEventTime = currentTime; try { - Component panel = (Component) e.getSource(); if (lastMousePoint == null) { lastMousePoint = e.getPoint(); return; @@ -180,20 +156,4 @@ final public void mouseDragged(final MouseEvent e) { lastMousePoint = e.getPoint(); // Always save the last Point } } - - /** - * Adaptively throttle the drag time based on repaint times. Its pointless to drag faster than we can repaint. - * - * @param t - */ - public static void repaintTime(double t) { - repaintTimes[repaintTimeCount++] = t; - if (repaintTimeCount == repaintTimes.length) { - double p = StatUtils.percentile(repaintTimes, 95); - throttleTimeMS = Math.max(5, Math.min(200, (int) p)); - repaintTimeCount = 0; - } - - } - } diff --git a/src/main/java/org/igv/ui/panel/ReferenceFrame.java b/src/main/java/org/igv/ui/panel/ReferenceFrame.java index 2111d57a0c..e744561102 100644 --- a/src/main/java/org/igv/ui/panel/ReferenceFrame.java +++ b/src/main/java/org/igv/ui/panel/ReferenceFrame.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import org.igv.Globals; @@ -191,7 +187,10 @@ public void setBounds(int pixelX, int widthInPixels) { computeLocationScale(); computeZoom(); } + } + public void setWidthInPixels(int widthInPixels) { + this.widthInPixels = widthInPixels; } /** @@ -682,6 +681,10 @@ private synchronized void computeLocationScale() { } } + public void setScale(double scale) { + this.scale = scale; + } + /** * Recalculate the zoom value based on current start/end * locationScale is not altered diff --git a/src/main/java/org/igv/ui/panel/RegionOfInterestPanel.java b/src/main/java/org/igv/ui/panel/RegionOfInterestPanel.java index 7c336b3bca..23cc7aa956 100644 --- a/src/main/java/org/igv/ui/panel/RegionOfInterestPanel.java +++ b/src/main/java/org/igv/ui/panel/RegionOfInterestPanel.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import org.igv.Globals; diff --git a/src/main/java/org/igv/ui/panel/RegionOfInterestTool.java b/src/main/java/org/igv/ui/panel/RegionOfInterestTool.java index a84020efb8..740f421760 100644 --- a/src/main/java/org/igv/ui/panel/RegionOfInterestTool.java +++ b/src/main/java/org/igv/ui/panel/RegionOfInterestTool.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import org.igv.feature.RegionOfInterest; diff --git a/src/main/java/org/igv/ui/panel/TrackPanelComponent.java b/src/main/java/org/igv/ui/panel/TrackPanelComponent.java index 9c916b7769..88162cdcec 100644 --- a/src/main/java/org/igv/ui/panel/TrackPanelComponent.java +++ b/src/main/java/org/igv/ui/panel/TrackPanelComponent.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.logging.*; import org.igv.Globals; diff --git a/src/main/java/org/igv/ui/panel/TrackPanelScrollPane.java b/src/main/java/org/igv/ui/panel/TrackPanelScrollPane.java index d9ebe59e52..b2e27a23a6 100644 --- a/src/main/java/org/igv/ui/panel/TrackPanelScrollPane.java +++ b/src/main/java/org/igv/ui/panel/TrackPanelScrollPane.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.panel; import com.jidesoft.swing.JideScrollPane; diff --git a/src/main/java/org/igv/ui/util/CheckList.java b/src/main/java/org/igv/ui/util/CheckList.java index 6db58bea10..4908b0f2ce 100644 --- a/src/main/java/org/igv/ui/util/CheckList.java +++ b/src/main/java/org/igv/ui/util/CheckList.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.util; diff --git a/src/main/java/org/igv/ui/util/DataPanelTool.java b/src/main/java/org/igv/ui/util/DataPanelTool.java index ea9cc3f6ad..b1e505277d 100644 --- a/src/main/java/org/igv/ui/util/DataPanelTool.java +++ b/src/main/java/org/igv/ui/util/DataPanelTool.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.util; diff --git a/src/main/java/org/igv/ui/util/MessageUtils.java b/src/main/java/org/igv/ui/util/MessageUtils.java index 9cee1c717b..30075d2b8d 100644 --- a/src/main/java/org/igv/ui/util/MessageUtils.java +++ b/src/main/java/org/igv/ui/util/MessageUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.util; import org.igv.Globals; diff --git a/src/main/java/org/igv/ui/util/Packable.java b/src/main/java/org/igv/ui/util/Packable.java index 1169805659..ce146c3772 100644 --- a/src/main/java/org/igv/ui/util/Packable.java +++ b/src/main/java/org/igv/ui/util/Packable.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.util; diff --git a/src/main/java/org/igv/ui/util/TracingRepaintManager.java b/src/main/java/org/igv/ui/util/TracingRepaintManager.java index d29909ac66..352fae166c 100644 --- a/src/main/java/org/igv/ui/util/TracingRepaintManager.java +++ b/src/main/java/org/igv/ui/util/TracingRepaintManager.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.util; diff --git a/src/main/java/org/igv/ui/util/UIUtilities.java b/src/main/java/org/igv/ui/util/UIUtilities.java index 83e3f39b81..818d6d5138 100644 --- a/src/main/java/org/igv/ui/util/UIUtilities.java +++ b/src/main/java/org/igv/ui/util/UIUtilities.java @@ -1,10 +1,5 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.ui.util; -//~--- non-JDK imports -------------------------------------------------------- import org.igv.Globals; import org.igv.logging.*; diff --git a/src/main/java/org/igv/util/ArrayHeapIntSorter.java b/src/main/java/org/igv/util/ArrayHeapIntSorter.java old mode 100755 new mode 100644 index 155eb67cff..030fc517c9 --- a/src/main/java/org/igv/util/ArrayHeapIntSorter.java +++ b/src/main/java/org/igv/util/ArrayHeapIntSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; public class ArrayHeapIntSorter { diff --git a/src/main/java/org/igv/util/ArrayHeapObjectSorter.java b/src/main/java/org/igv/util/ArrayHeapObjectSorter.java index 9d03b15cf0..c49be5ab75 100644 --- a/src/main/java/org/igv/util/ArrayHeapObjectSorter.java +++ b/src/main/java/org/igv/util/ArrayHeapObjectSorter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; import java.util.Comparator; diff --git a/src/main/java/org/igv/util/AsciiEcho.java b/src/main/java/org/igv/util/AsciiEcho.java index 6a355fe08b..0f7b64c66f 100644 --- a/src/main/java/org/igv/util/AsciiEcho.java +++ b/src/main/java/org/igv/util/AsciiEcho.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; diff --git a/src/main/java/org/igv/util/FilterElement.java b/src/main/java/org/igv/util/FilterElement.java index 31f8dbbf9c..c6c725c2f5 100644 --- a/src/main/java/org/igv/util/FilterElement.java +++ b/src/main/java/org/igv/util/FilterElement.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; import org.igv.track.AttributeManager; diff --git a/src/main/java/org/igv/util/IlluminaUtils.java b/src/main/java/org/igv/util/IlluminaUtils.java index 6725d346fc..013e90696f 100644 --- a/src/main/java/org/igv/util/IlluminaUtils.java +++ b/src/main/java/org/igv/util/IlluminaUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; import java.io.*; diff --git a/src/main/java/org/igv/util/IntComparator.java b/src/main/java/org/igv/util/IntComparator.java index d734c3537d..7d0c06b677 100644 --- a/src/main/java/org/igv/util/IntComparator.java +++ b/src/main/java/org/igv/util/IntComparator.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; diff --git a/src/main/java/org/igv/util/RuntimeUtils.java b/src/main/java/org/igv/util/RuntimeUtils.java index 02bd545eb3..4f64938657 100644 --- a/src/main/java/org/igv/util/RuntimeUtils.java +++ b/src/main/java/org/igv/util/RuntimeUtils.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; import org.igv.logging.*; diff --git a/src/main/java/org/igv/util/SequenceGC.java b/src/main/java/org/igv/util/SequenceGC.java index 9c80c51a4f..0b31023a0e 100644 --- a/src/main/java/org/igv/util/SequenceGC.java +++ b/src/main/java/org/igv/util/SequenceGC.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; diff --git a/src/main/java/org/igv/util/TrackFilter.java b/src/main/java/org/igv/util/TrackFilter.java index 9c1c9af10e..1dc3559387 100644 --- a/src/main/java/org/igv/util/TrackFilter.java +++ b/src/main/java/org/igv/util/TrackFilter.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; diff --git a/src/main/java/org/igv/util/Utilities.java b/src/main/java/org/igv/util/Utilities.java index 302e0090b6..e39d14063e 100644 --- a/src/main/java/org/igv/util/Utilities.java +++ b/src/main/java/org/igv/util/Utilities.java @@ -1,6 +1,5 @@ package org.igv.util; -//~--- non-JDK imports -------------------------------------------------------- import biz.source_code.base64Coder.Base64Coder; import org.igv.logging.*; diff --git a/src/main/java/org/igv/util/collections/StringArrayList.java b/src/main/java/org/igv/util/collections/StringArrayList.java index 8010d0d61c..23a93896df 100644 --- a/src/main/java/org/igv/util/collections/StringArrayList.java +++ b/src/main/java/org/igv/util/collections/StringArrayList.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util.collections; diff --git a/src/test/java/org/igv/data/IGVDatasetTest.java b/src/test/java/org/igv/data/IGVDatasetTest.java index 5d728e5249..59b07e2388 100644 --- a/src/test/java/org/igv/data/IGVDatasetTest.java +++ b/src/test/java/org/igv/data/IGVDatasetTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.data; import org.igv.AbstractHeadlessTest; diff --git a/src/test/java/org/igv/feature/FeatureUtilsTest.java b/src/test/java/org/igv/feature/FeatureUtilsTest.java index bb8a3bc0d8..9be53022b4 100644 --- a/src/test/java/org/igv/feature/FeatureUtilsTest.java +++ b/src/test/java/org/igv/feature/FeatureUtilsTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; import org.igv.feature.genome.Genome; diff --git a/src/test/java/org/igv/feature/GeneTest.java b/src/test/java/org/igv/feature/GeneTest.java index 6ab3316334..c3a9bbb707 100644 --- a/src/test/java/org/igv/feature/GeneTest.java +++ b/src/test/java/org/igv/feature/GeneTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; import org.igv.AbstractHeadlessTest; diff --git a/src/test/java/org/igv/feature/LocusTest.java b/src/test/java/org/igv/feature/LocusTest.java index 6676a18701..e0dbd2f9d3 100644 --- a/src/test/java/org/igv/feature/LocusTest.java +++ b/src/test/java/org/igv/feature/LocusTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; diff --git a/src/test/java/org/igv/feature/ProbeToGeneMapTest.java b/src/test/java/org/igv/feature/ProbeToGeneMapTest.java index da6fb0fd6b..bc1eceebe0 100644 --- a/src/test/java/org/igv/feature/ProbeToGeneMapTest.java +++ b/src/test/java/org/igv/feature/ProbeToGeneMapTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; import org.igv.util.TestUtils; diff --git a/src/test/java/org/igv/feature/TestLoadGeneManager.java b/src/test/java/org/igv/feature/TestLoadGeneManager.java index 930c96ef79..b1f79a3980 100644 --- a/src/test/java/org/igv/feature/TestLoadGeneManager.java +++ b/src/test/java/org/igv/feature/TestLoadGeneManager.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature; diff --git a/src/test/java/org/igv/feature/aa/AminoAcidManagerTest.java b/src/test/java/org/igv/feature/aa/AminoAcidManagerTest.java index 699bf7a583..da14a2e03e 100644 --- a/src/test/java/org/igv/feature/aa/AminoAcidManagerTest.java +++ b/src/test/java/org/igv/feature/aa/AminoAcidManagerTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.aa; import org.igv.AbstractHeadlessTest; diff --git a/src/test/java/org/igv/feature/genome/GenomeManagerTest.java b/src/test/java/org/igv/feature/genome/GenomeManagerTest.java index de6fb76e17..27d295e51d 100644 --- a/src/test/java/org/igv/feature/genome/GenomeManagerTest.java +++ b/src/test/java/org/igv/feature/genome/GenomeManagerTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.feature.genome; diff --git a/src/test/java/org/igv/hic/HicFileLocalTest.java b/src/test/java/org/igv/hic/HicFileLocalTest.java new file mode 100644 index 0000000000..3be2f7574c --- /dev/null +++ b/src/test/java/org/igv/hic/HicFileLocalTest.java @@ -0,0 +1,49 @@ +package org.igv.hic; + +import org.igv.feature.genome.Genome; +import org.igv.util.TestUtils; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.IOException; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class HicFileLocalTest { + + static String dataFile = TestUtils.DATA_DIR + "hic/test_chr22.hic"; + static HicFile hicFile; + + @BeforeClass + public static void setUp() throws Exception { + Genome genome = TestUtils.mockUCSCGenome(); + hicFile = new HicFile(dataFile, genome); + } + + + @Test + public void getVersion() { + int version = hicFile.getVersion(); + assertEquals(8, version); + } + + @Test + public void getNormalizationVector() throws IOException { + + String type = "KR"; + String chr = "22"; + String unit = "BP"; + int binSize = 100000; + NormalizationVector normVector = hicFile.getNormalizationVector(type, chr, unit, binSize); + assertEquals(515, normVector.getnValues()); + + double[] values = normVector.getValues(200, 300); + assertEquals(0.9477306190631148, values[0], 0.00001); + + values = normVector.getValues(0, 100); + assertTrue(Double.isNaN(values[0])); + } + +} diff --git a/src/test/java/org/igv/hic/HicFileTest.java b/src/test/java/org/igv/hic/HicFileTest.java index 98638afd98..94bcd5ce32 100644 --- a/src/test/java/org/igv/hic/HicFileTest.java +++ b/src/test/java/org/igv/hic/HicFileTest.java @@ -33,7 +33,7 @@ public void getContactRecords() throws IOException { Region region1 = new Region("chr1", 0, 249000000); Region region2 = new Region("chr1", 0, 249000000); int binSize = 250000; - List records = hicFile.getContactRecords(region1, region2, "BP", binSize, true); + List records = hicFile.getContactRecords(region1, region2, "BP", binSize, "NONE", true); assertEquals(396963, records.size()); } @@ -52,4 +52,5 @@ public void getNVI() { String nvi = NVI.getNVI("https://4dn-open-data-public.s3.amazonaws.com/fourfront-webprod/wfoutput/e351f7cc-7a2c-4515-ae0b-3bb2f91c986a/4DNFIMIMLMD3.hic"); assertEquals("240094740,25900", nvi); } + } diff --git a/src/test/java/org/igv/preprocess/FeatureDatasetTest.java b/src/test/java/org/igv/preprocess/FeatureDatasetTest.java index 1e7761a5d2..972e6f6ec7 100644 --- a/src/test/java/org/igv/preprocess/FeatureDatasetTest.java +++ b/src/test/java/org/igv/preprocess/FeatureDatasetTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.preprocess; import org.igv.AbstractHeadlessTest; diff --git a/src/test/java/org/igv/renderer/MappedColorScaleTest.java b/src/test/java/org/igv/renderer/MappedColorScaleTest.java index ba6e6c3456..f36ab772aa 100644 --- a/src/test/java/org/igv/renderer/MappedColorScaleTest.java +++ b/src/test/java/org/igv/renderer/MappedColorScaleTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.renderer; diff --git a/src/test/java/org/igv/sam/AlignmentPackerTest.java b/src/test/java/org/igv/sam/AlignmentPackerTest.java index c0b131548d..e3fcce6abf 100644 --- a/src/test/java/org/igv/sam/AlignmentPackerTest.java +++ b/src/test/java/org/igv/sam/AlignmentPackerTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; diff --git a/src/test/java/org/igv/sam/AlignmentTileLoaderTest.java b/src/test/java/org/igv/sam/AlignmentTileLoaderTest.java index 5073bb17b5..0e08ca42be 100644 --- a/src/test/java/org/igv/sam/AlignmentTileLoaderTest.java +++ b/src/test/java/org/igv/sam/AlignmentTileLoaderTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import org.igv.AbstractHeadlessTest; diff --git a/src/test/java/org/igv/sam/AsciiLineReaderTest.java b/src/test/java/org/igv/sam/AsciiLineReaderTest.java index 83aed69eeb..62ff5087f8 100644 --- a/src/test/java/org/igv/sam/AsciiLineReaderTest.java +++ b/src/test/java/org/igv/sam/AsciiLineReaderTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import org.igv.util.TestUtils; diff --git a/src/test/java/org/igv/sam/BAMFileReaderTest.java b/src/test/java/org/igv/sam/BAMFileReaderTest.java index 78c032ef21..ed50520351 100644 --- a/src/test/java/org/igv/sam/BAMFileReaderTest.java +++ b/src/test/java/org/igv/sam/BAMFileReaderTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; diff --git a/src/test/java/org/igv/sam/SamIndexTest.java b/src/test/java/org/igv/sam/SamIndexTest.java index a6082f243a..fc136fe844 100644 --- a/src/test/java/org/igv/sam/SamIndexTest.java +++ b/src/test/java/org/igv/sam/SamIndexTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; diff --git a/src/test/java/org/igv/sam/SamIndexerTest.java b/src/test/java/org/igv/sam/SamIndexerTest.java index 672a0d82a2..932438d2a7 100644 --- a/src/test/java/org/igv/sam/SamIndexerTest.java +++ b/src/test/java/org/igv/sam/SamIndexerTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; diff --git a/src/test/java/org/igv/sam/SamQueryTextReaderTest.java b/src/test/java/org/igv/sam/SamQueryTextReaderTest.java index 8ae7a8d568..4054a6e826 100644 --- a/src/test/java/org/igv/sam/SamQueryTextReaderTest.java +++ b/src/test/java/org/igv/sam/SamQueryTextReaderTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam; import htsjdk.samtools.util.CloseableIterator; diff --git a/src/test/java/org/igv/sam/cram/CRAMReaderTest.java b/src/test/java/org/igv/sam/cram/CRAMReaderTest.java index 7b518da0e6..d077eafd82 100644 --- a/src/test/java/org/igv/sam/cram/CRAMReaderTest.java +++ b/src/test/java/org/igv/sam/cram/CRAMReaderTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.cram; diff --git a/src/test/java/org/igv/sam/reader/BAMHttpReaderTest.java b/src/test/java/org/igv/sam/reader/BAMHttpReaderTest.java index b023b9afce..b0a8d8a547 100644 --- a/src/test/java/org/igv/sam/reader/BAMHttpReaderTest.java +++ b/src/test/java/org/igv/sam/reader/BAMHttpReaderTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.sam.reader; diff --git a/src/test/java/org/igv/tdf/TDFReadWriteTest.java b/src/test/java/org/igv/tdf/TDFReadWriteTest.java index f5501f7489..e8f5c6727b 100644 --- a/src/test/java/org/igv/tdf/TDFReadWriteTest.java +++ b/src/test/java/org/igv/tdf/TDFReadWriteTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tdf; import org.igv.track.TrackType; diff --git a/src/test/java/org/igv/tools/AccumulatorTest.java b/src/test/java/org/igv/tools/AccumulatorTest.java index fd52ec4834..df36b27dfa 100644 --- a/src/test/java/org/igv/tools/AccumulatorTest.java +++ b/src/test/java/org/igv/tools/AccumulatorTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.tools; import org.igv.track.WindowFunction; diff --git a/src/test/java/org/igv/util/HeapSortTest.java b/src/test/java/org/igv/util/HeapSortTest.java index bc5ee83752..dd807cc92c 100644 --- a/src/test/java/org/igv/util/HeapSortTest.java +++ b/src/test/java/org/igv/util/HeapSortTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; import org.junit.AfterClass; diff --git a/src/test/java/org/igv/util/SequenceGCTest.java b/src/test/java/org/igv/util/SequenceGCTest.java index 8eaebe9211..41753938e9 100644 --- a/src/test/java/org/igv/util/SequenceGCTest.java +++ b/src/test/java/org/igv/util/SequenceGCTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util; diff --git a/src/test/java/org/igv/util/collections/DoubleArrayListTest.java b/src/test/java/org/igv/util/collections/DoubleArrayListTest.java index 411cd4ba1d..2c6e08189d 100644 --- a/src/test/java/org/igv/util/collections/DoubleArrayListTest.java +++ b/src/test/java/org/igv/util/collections/DoubleArrayListTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util.collections; diff --git a/src/test/java/org/igv/util/collections/IntArrayListTest.java b/src/test/java/org/igv/util/collections/IntArrayListTest.java index 8c40ba83c2..a270ce2105 100644 --- a/src/test/java/org/igv/util/collections/IntArrayListTest.java +++ b/src/test/java/org/igv/util/collections/IntArrayListTest.java @@ -1,7 +1,3 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ package org.igv.util.collections; diff --git a/test/data/hic/test_chr22.hic b/test/data/hic/test_chr22.hic new file mode 100644 index 0000000000..30efc5b8c3 Binary files /dev/null and b/test/data/hic/test_chr22.hic differ diff --git a/test/sessions/4dn_hic.xml b/test/sessions/4dn_hic.xml new file mode 100644 index 0000000000..d733b94150 --- /dev/null +++ b/test/sessions/4dn_hic.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/test/sessions/igv_session.xml b/test/sessions/igv_session.xml deleted file mode 100644 index 0fe2d24803..0000000000 --- a/test/sessions/igv_session.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -