Skip to content

Commit

Permalink
Merge pull request #4 from sa501428/removeIterators
Browse files Browse the repository at this point in the history
Remove iterators
  • Loading branch information
sa501428 authored Feb 25, 2022
2 parents 2e503e8 + 3e7ee94 commit f4c9d9d
Show file tree
Hide file tree
Showing 23 changed files with 274 additions and 921 deletions.
2 changes: 1 addition & 1 deletion src/javastraw/StrawGlobals.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
package javastraw;

public class StrawGlobals {
public static final String versionNum = "2.09.02";
public static final String versionNum = "2.11.01";
// min hic file version supported
public static final int minVersion = 6;
public static final int bufferSize = 2097152;
Expand Down
1 change: 1 addition & 0 deletions src/javastraw/reader/Dataset.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public Dataset(DatasetReader reader) {

public void clearCache(boolean onlyClearInter) {
for (Matrix matrix : matrices.values()) {
if (matrix == null) continue;
if (onlyClearInter && matrix.isIntra()) continue;
try {
matrix.clearCache();
Expand Down
34 changes: 30 additions & 4 deletions src/javastraw/reader/block/Block.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,11 @@

package javastraw.reader.block;

//import java.awt.*;
//import java.util.List;

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

public class Block {
public class Block implements Comparable<Block> {

private final int number;
private final String uniqueRegionID;
Expand Down Expand Up @@ -59,4 +57,32 @@ public String getUniqueRegionID() {
public List<ContactRecord> getContactRecords() {
return records;
}

@Override
public int compareTo(Block o) {
if (this == o) return 0;
int[] comparisons = new int[]{Integer.compare(number, o.number),
uniqueRegionID.compareTo(o.uniqueRegionID),
Integer.compare(records.size(), o.records.size())
};
for (int val : comparisons) {
if (val != 0) {
return val;
}
}
return 0;
}

@Override
public boolean equals(Object obj) {
return obj instanceof Block
&& ((Block) obj).number == number
&& ((Block) obj).uniqueRegionID.equals(uniqueRegionID)
&& ((Block) obj).records.size() == records.size();
}

@Override
public int hashCode() {
return Objects.hash(number, uniqueRegionID, records.size());
}
}
134 changes: 0 additions & 134 deletions src/javastraw/reader/iterators/BigContactRecordList.java

This file was deleted.

20 changes: 13 additions & 7 deletions src/javastraw/reader/iterators/ContactRecordIterator.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import javastraw.reader.mzd.BlockCache;
import javastraw.reader.mzd.BlockLoader;
import javastraw.reader.type.HiCZoom;
import javastraw.reader.type.NormalizationHandler;
import javastraw.reader.type.NormalizationType;

import java.io.IOException;
import java.util.Iterator;
Expand All @@ -49,19 +49,21 @@ public class ContactRecordIterator implements Iterator<ContactRecord> {
private final BlockCache blockCache;
private final int chr1Idx, chr2Idx;
private final HiCZoom zoom;
private final NormalizationType normType;

/**
* Initializes the iterator
*/
public ContactRecordIterator(DatasetReader reader, String zdKey, BlockCache blockCache,
int chr1Idx, int chr2Idx, HiCZoom zoom) {
int chr1Idx, int chr2Idx, HiCZoom zoom, NormalizationType normType) {
this.reader = reader;
this.zdKey = zdKey;
this.chr1Idx = chr1Idx;
this.chr2Idx = chr2Idx;
this.zoom = zoom;
this.blockCache = blockCache;
this.blockIdx = -1;
this.normType = normType;
this.blockNumbers = reader.getBlockNumbers(zdKey);
}

Expand All @@ -78,25 +80,29 @@ public boolean hasNext() {
return true;
} else {
blockIdx++;
if (blockIdx < blockNumbers.size()) {
while (blockIdx < blockNumbers.size()) {
try {
int blockNumber = blockNumbers.get(blockIdx);

// Optionally check the cache
String key = BlockLoader.getBlockKey(zdKey, blockNumber, NormalizationHandler.NONE);
String key = BlockLoader.getBlockKey(zdKey, blockNumber, normType);
Block nextBlock;
if (blockCache.containsKey(key)) {
nextBlock = blockCache.get(key);
} else {
nextBlock = reader.readNormalizedBlock(blockNumber, zdKey, NormalizationHandler.NONE,
nextBlock = reader.readNormalizedBlock(blockNumber, zdKey, normType,
chr1Idx, chr2Idx, zoom);
}
currentBlockIterator = nextBlock.getContactRecords().iterator();
return true;
List<ContactRecord> contactRecords = nextBlock.getContactRecords();
if (contactRecords != null && contactRecords.size() > 0) {
currentBlockIterator = contactRecords.iterator();
return true;
}
} catch (IOException e) {
System.err.println("Error fetching block " + e.getMessage());
return false;
}
blockIdx++;
}
}

Expand Down
9 changes: 8 additions & 1 deletion src/javastraw/reader/iterators/CoupledIteratorAndOffset.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,18 @@ public class CoupledIteratorAndOffset implements Iterator<ContactRecord> {

private final Iterator<ContactRecord> internalIterator;
private final int xOffset, yOffset;
private final boolean isIntra;

public CoupledIteratorAndOffset(Iterator<ContactRecord> iterator, int xOffset, int yOffset) {
public CoupledIteratorAndOffset(Iterator<ContactRecord> iterator, int xOffset, int yOffset,
boolean isIntra) {
internalIterator = iterator;
this.xOffset = xOffset;
this.yOffset = yOffset;
this.isIntra = isIntra;
}

public boolean getIsIntra() {
return isIntra;
}

@Override
Expand Down
103 changes: 0 additions & 103 deletions src/javastraw/reader/iterators/GWIteratorContainer.java

This file was deleted.

Loading

0 comments on commit f4c9d9d

Please sign in to comment.