File: MotifMulti.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 (63 lines) | stat: -rwxr-xr-x 1,230 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
54
55
56
57
58
59
60
61
62
63
package dna;
import java.util.Arrays;


public class MotifMulti extends Motif {
	
	public MotifMulti(String name_, Motif...args){
		super(name_, args[0].length, args[0].center);
		commonLetters=Arrays.toString(args);
		sub=args;
	}
	
	
	@Override
	public boolean matchesExactly(byte[] source, int a){
		for(int i=0; i<sub.length; i++){
			Motif m=sub[i];
			if(m.matchesExactly(source, a)){
				return true;
			}
		}
		return false;
	}
	
	
	@Override
	public boolean matchesExtended(byte[] source, int a){
		for(int i=0; i<sub.length; i++){
			Motif m=sub[i];
			if(m.matchesExtended(source, a)){
				return true;
			}
		}
		return false;
	}
	
	@Override
	public float normalize(double strength){
		return (float)strength;
//		throw new RuntimeException("MotifMulti can't normalize without knowing the submotif.");
	}
	
	
	@Override
	public float matchStrength(byte[] source, int a){
		float max=0;
		for(int i=0; i<sub.length; i++){
			Motif m=sub[i];
			float temp=m.matchStrength(source, a);
			temp=m.normalize(temp);
			max=max(max, temp);
		}
		return max;
	}

	@Override
	public int numBases() {
		return sub[0].numBases();
	}
	
	public final Motif[] sub;
	
}