File: ReadTag.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 (106 lines) | stat: -rwxr-xr-x 1,941 bytes parent folder | download | duplicates (2)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package cluster;

import java.io.Serializable;

import stream.Read;

/**
 * @author Brian Bushnell
 * @date Mar 24, 2014
 *
 */
class ReadTag implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6186366525723397478L;

	public ReadTag(Read r_){
		r=r_;
		strand=r.strand();

		int gcCount_=0;
		for(byte b : r.bases){
			if(b=='G' || b=='C'){
				gcCount_++;
			}
		}
		gcCount=gcCount_;
		
		processHeader(r.id);
	}
	
	private void processHeader(String s){
		assert(false) : "TODO";
		gc=-1;
		depth=-1;
		cluster0=-1;
	}

	Read r1(){
		return strand==0 ? r : r.mate;
	}
	
	Read r2(){
		return strand==1 ? r : r.mate;
	}
	
	ReadTag tag1(){
		return (ReadTag)r1().obj;
	}
	
	ReadTag tag2(){
		Read r2=r2();
		return r2==null ? null : (ReadTag)r2.obj;
	}
	
//	private int[] toKmers(final int k){
//		return ClusterTools.toKmers(r.bases, null, k);
//	}
	
	int[] kmerArray1(int k1){
		if(kmerArray1==null){kmerArray1=ClusterTools.toKmers(r.bases, null, k1);}
		return kmerArray1;
	}
	
	int[] kmerArray2(int k2){
		if(kmerArray2==null){kmerArray2=ClusterTools.toKmerCounts(r.bases, null, k2);}
		return kmerArray2;
	}
	
	float[] kmerFreq2(int k2){
		if(kmerFreq2==null){
			int[] counts=kmerArray2(k2);
			if(counts!=null){
				long sum=shared.Vector.sum(counts);
				kmerFreq2=new float[counts.length];
				float extra=(0.05f/counts.length);
				float mult=0.95f/sum;
				for(int i=0; i<counts.length; i++){
					kmerFreq2[i]=counts[i]*mult+extra;
				}
			}
		}
		return kmerFreq2;
	}
	
	/** Sorted long kmers */
	private int[] kmerArray1;
	
	/** Canonically-ordered short kmer counts */
	private int[] kmerArray2;
	
	private float[] kmerFreq2;
	
	final Read r;
	final byte strand;
	final int gcCount;
	
	int depth;
	int cluster0=-1; //initial cluster
	int cluster1=-1; //final cluster

	float gc;
	
}