diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/prok/ScafData.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/prok/ScafData.java	Tue Mar 18 16:23:26 2025 -0400
@@ -0,0 +1,88 @@
+package prok;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import dna.AminoAcid;
+import gff.GffLine;
+import stream.Read;
+import structures.IntList;
+
+/**
+ * Tracks information about a scaffold for AnalyzeGenes.
+ * @author Brian Bushnell
+ * @date Sep 24, 2018
+ *
+ */
+class ScafData {
+	
+	/*--------------------------------------------------------------*/
+	/*----------------        Initialization        ----------------*/
+	/*--------------------------------------------------------------*/
+	
+	ScafData(Read r){
+		this(r.id, r.bases, new byte[r.length()]);
+	}
+	
+	ScafData(String name_, byte[] bases_, byte[] frames_){
+		name=name_;
+		bases=bases_;
+		frames=frames_;
+		cdsLines[0]=new ArrayList<GffLine>();
+		cdsLines[1]=new ArrayList<GffLine>();
+		rnaLines[0]=new ArrayList<GffLine>();
+		rnaLines[1]=new ArrayList<GffLine>();
+	}
+	
+	/*--------------------------------------------------------------*/
+	/*----------------           Methods            ----------------*/
+	/*--------------------------------------------------------------*/
+	
+	void clear(){
+		Arrays.fill(frames, (byte)0);
+		starts.clear();
+		stops.clear();
+	}
+	
+	void reverseComplement(){
+		AminoAcid.reverseComplementBasesInPlace(bases);
+		strand=1^strand;
+	}
+	
+	void addCDS(GffLine gline){
+		assert(gline.strand>=0) : gline+"\n"+gline.strand;
+		cdsLines[gline.strand].add(gline);
+	}
+	
+	void addRNA(GffLine gline){
+		assert(gline.strand>=0) : gline+"\n"+gline.strand;
+		rnaLines[gline.strand].add(gline);
+	}
+	
+	byte[] fetch(int start, int stop){
+		assert(start>=0 && stop<bases.length);
+		assert(start<stop);
+		return Arrays.copyOfRange(bases, start, stop+1);
+	}
+	
+	int strand(){return strand;}
+
+	public int length() {return bases==null ? 0 : bases.length;}
+	
+	/*--------------------------------------------------------------*/
+	/*----------------            Fields            ----------------*/
+	/*--------------------------------------------------------------*/
+	
+	final String name;
+	final byte[] bases;
+	final byte[] frames;
+	final IntList starts=new IntList(8);
+	final IntList stops=new IntList(8);
+	private int strand=0;
+	
+	/** gLines[strand] holds the GffLines for that strand */
+	@SuppressWarnings("unchecked")
+	ArrayList<GffLine>[] cdsLines=new ArrayList[2];
+	@SuppressWarnings("unchecked")
+	ArrayList<GffLine>[] rnaLines=new ArrayList[2];
+}