diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/aligner/Alignment.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/aligner/Alignment.java	Tue Mar 18 16:23:26 2025 -0400
@@ -0,0 +1,54 @@
+package aligner;
+
+import prok.GeneCaller;
+import stream.Read;
+
+public class Alignment implements Comparable<Alignment>{
+	
+	public Alignment(Read r_){
+		r=r_;
+	}
+	
+	@Override
+	public int compareTo(Alignment o) {
+		return id>o.id ? 1 : id<o.id ? -1 : r.length()>o.r.length() ? 1 : r.length()<o.r.length() ? -1 : 0;
+	}
+	
+	public float align(byte[] ref){
+		id=align(r, ref);
+		match=r.match;
+		start=r.start;
+		stop=r.stop;
+		return id;
+	}
+	
+	public static float align(Read r, byte[] ref){
+		SingleStateAlignerFlat2 ssa=GeneCaller.getSSA();
+		final int a=0, b=ref.length-1;
+		int[] max=ssa.fillUnlimited(r.bases, ref, a, b, 0);
+		if(max==null){return 0;}
+		
+		final int rows=max[0];
+		final int maxCol=max[1];
+		final int maxState=max[2];
+		
+		//returns {score, bestRefStart, bestRefStop} 
+		//padded: {score, bestRefStart, bestRefStop, padLeft, padRight};
+		int[] score=ssa.score(r.bases, ref, a, b, rows, maxCol, maxState);
+		int rstart=score[1];
+		int rstop=score[2];
+		r.start=rstart;
+		r.stop=rstop;
+		
+		byte[] match=ssa.traceback(r.bases, ref, a, b, rows, maxCol, maxState);
+		float id=Read.identity(match);
+		return id;
+	}
+	
+	public final Read r;
+	public float id=-1;
+	public byte[] match;
+	public int start;
+	public int stop;
+	
+}