Mercurial > repos > rliterman > csp2
diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/kmer/KmerNode1D.java @ 68:5028fdace37b
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 16:23:26 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/kmer/KmerNode1D.java Tue Mar 18 16:23:26 2025 -0400 @@ -0,0 +1,175 @@ +package kmer; + +import java.util.concurrent.atomic.AtomicLong; + +import fileIO.ByteStreamWriter; +import structures.ByteBuilder; + +/** + * @author Brian Bushnell + * @date Oct 22, 2013 + * + */ +public class KmerNode1D extends KmerNode { + + /*--------------------------------------------------------------*/ + /*---------------- Initialization ----------------*/ + /*--------------------------------------------------------------*/ + + public KmerNode1D(long pivot_){ + super(pivot_); + } + + public KmerNode1D(long pivot_, int value_){ + super(pivot_); + value=value_; + } + + @Override + public final KmerNode makeNode(long pivot_, int value_){ + return new KmerNode1D(pivot_, value_); + } + + @Override + public final KmerNode makeNode(long pivot_, int[] values_, int vlen){ + throw new RuntimeException("Unimplemented"); + } + + /*--------------------------------------------------------------*/ + /*---------------- Public Methods ----------------*/ + /*--------------------------------------------------------------*/ + + @Override + public final int set(long kmer, int[] vals, int vlen) { + throw new RuntimeException("Unimplemented."); + } + + /*--------------------------------------------------------------*/ + /*---------------- Nonpublic Methods ----------------*/ + /*--------------------------------------------------------------*/ + + @Override + public int value(){return value;} + + @Override + protected int[] values(int[] singleton){ + assert(singleton.length==1); + singleton[0]=value; + return singleton; + } + + @Override + public int set(int value_){return value=value_;} + + @Override + protected int set(int[] values_, int vlen){ + throw new RuntimeException("Unimplemented"); + } + + @Override + int numValues(){return value<1 ? 0 : 1;} + + /*--------------------------------------------------------------*/ + /*---------------- Private Methods ----------------*/ + /*--------------------------------------------------------------*/ + + /*--------------------------------------------------------------*/ + /*---------------- Resizing and Rebalancing ----------------*/ + /*--------------------------------------------------------------*/ + + @Override + boolean canResize() { + return false; + } + + @Override + public boolean canRebalance() { + return true; + } + + @Deprecated + @Override + public int arrayLength() { + throw new RuntimeException("Unsupported."); + } + + @Deprecated + @Override + void resize() { + throw new RuntimeException("Unsupported."); + } + + @Deprecated + @Override + public void rebalance() { + throw new RuntimeException("Please call rebalance(ArrayList<KmerNode>) instead, with an empty list."); + } + + /*--------------------------------------------------------------*/ + /*---------------- Info Dumping ----------------*/ + /*--------------------------------------------------------------*/ + + @Override + public final boolean dumpKmersAsBytes(ByteStreamWriter bsw, int k, int mincount, int maxcount, AtomicLong remaining){ + if(value<1){return true;} + if(value>=mincount){ + if(remaining!=null && remaining.decrementAndGet()<0){return true;} + bsw.printlnKmer(pivot, value, k); + } + if(left!=null){left.dumpKmersAsBytes(bsw, k, mincount, maxcount, remaining);} + if(right!=null){right.dumpKmersAsBytes(bsw, k, mincount, maxcount, remaining);} + return true; + } + + @Override + public final boolean dumpKmersAsBytes_MT(final ByteStreamWriter bsw, final ByteBuilder bb, final int k, final int mincount, int maxcount, AtomicLong remaining){ + if(value<1){return true;} + if(value>=mincount){ + if(remaining!=null && remaining.decrementAndGet()<0){return true;} + toBytes(pivot, value, k, bb); + bb.nl(); + if(bb.length()>=16000){ + ByteBuilder bb2=new ByteBuilder(bb); + synchronized(bsw){bsw.addJob(bb2);} + bb.clear(); + } + } + if(left!=null){left.dumpKmersAsBytes_MT(bsw, bb, k, mincount, maxcount, remaining);} + if(right!=null){right.dumpKmersAsBytes_MT(bsw, bb, k, mincount, maxcount, remaining);} + return true; + } + + @Override + protected final StringBuilder dumpKmersAsText(StringBuilder sb, int k, int mincount, int maxcount){ + if(value<1){return sb;} + if(sb==null){sb=new StringBuilder(32);} + if(value>=mincount){sb.append(AbstractKmerTable.toText(pivot, value, k)).append('\n');} + if(left!=null){left.dumpKmersAsText(sb, k, mincount, maxcount);} + if(right!=null){right.dumpKmersAsText(sb, k, mincount, maxcount);} + return sb; + } + + @Override + protected final ByteBuilder dumpKmersAsText(ByteBuilder bb, int k, int mincount, int maxcount){ + if(value<1){return bb;} + if(bb==null){bb=new ByteBuilder(32);} + if(value>=mincount){bb.append(AbstractKmerTable.toBytes(pivot, value, k)).append('\n');} + if(left!=null){left.dumpKmersAsText(bb, k, mincount, maxcount);} + if(right!=null){right.dumpKmersAsText(bb, k, mincount, maxcount);} + return bb; + } + + @Override + final boolean TWOD(){return false;} + + /*--------------------------------------------------------------*/ + /*---------------- Invalid Methods ----------------*/ + /*--------------------------------------------------------------*/ + + /*--------------------------------------------------------------*/ + /*---------------- Fields ----------------*/ + /*--------------------------------------------------------------*/ + + int value; + +}