File: AbstractProcessContigThread.java

package info (click to toggle)
bbmap 39.20%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,024 kB
  • sloc: java: 312,743; sh: 18,099; python: 5,247; ansic: 2,074; perl: 96; makefile: 39; xml: 38
file content (53 lines) | stat: -rwxr-xr-x 1,503 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package assemble;

import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;

import shared.KillSwitch;
import structures.ByteBuilder;

/**
 * Thread for exploring connectivity graph between contigs.
 * @author Brian Bushnell
 * @date July 12, 2018
 *
 */
public abstract class AbstractProcessContigThread extends Thread {

	AbstractProcessContigThread(ArrayList<Contig> contigs_, AtomicInteger next_){
		contigs=contigs_;
		next=next_;
	}
	
	@Override
	public void run(){
		processContigs(contigs);
	}

	public final void processContigs(ArrayList<Contig> contigs){
		for(int cnum=next.getAndIncrement(); cnum<contigs.size(); cnum=next.getAndIncrement()){
			Contig c=contigs.get(cnum);
			processContigLeft(c, leftCounts, rightCounts, extraCounts, bb);
			processContigRight(c, leftCounts, rightCounts, extraCounts, bb);
		}
	}

	abstract void processContigLeft(Contig c, int[] leftCounts, int[] rightCounts, int[] extraCounts, ByteBuilder bb);

	abstract void processContigRight(Contig c, int[] leftCounts, int[] rightCounts, int[] extraCounts, ByteBuilder bb);

	final int[] leftCounts=KillSwitch.allocInt1D(4);
	final int[] rightCounts=KillSwitch.allocInt1D(4);
	final int[] extraCounts=KillSwitch.allocInt1D(4);

	final ArrayList<Contig> contigs;
	final AtomicInteger next;

	int lastLength=-1;
	int lastTarget=-1;
	int lastExitCondition=-1;
	int lastOrientation=-1;
	ByteBuilder bb=new ByteBuilder();
	long edgesMadeT=0;

}