annotate 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
rev   line source
jpayne@68 1 package prok;
jpayne@68 2
jpayne@68 3 import java.util.ArrayList;
jpayne@68 4 import java.util.Arrays;
jpayne@68 5
jpayne@68 6 import dna.AminoAcid;
jpayne@68 7 import gff.GffLine;
jpayne@68 8 import stream.Read;
jpayne@68 9 import structures.IntList;
jpayne@68 10
jpayne@68 11 /**
jpayne@68 12 * Tracks information about a scaffold for AnalyzeGenes.
jpayne@68 13 * @author Brian Bushnell
jpayne@68 14 * @date Sep 24, 2018
jpayne@68 15 *
jpayne@68 16 */
jpayne@68 17 class ScafData {
jpayne@68 18
jpayne@68 19 /*--------------------------------------------------------------*/
jpayne@68 20 /*---------------- Initialization ----------------*/
jpayne@68 21 /*--------------------------------------------------------------*/
jpayne@68 22
jpayne@68 23 ScafData(Read r){
jpayne@68 24 this(r.id, r.bases, new byte[r.length()]);
jpayne@68 25 }
jpayne@68 26
jpayne@68 27 ScafData(String name_, byte[] bases_, byte[] frames_){
jpayne@68 28 name=name_;
jpayne@68 29 bases=bases_;
jpayne@68 30 frames=frames_;
jpayne@68 31 cdsLines[0]=new ArrayList<GffLine>();
jpayne@68 32 cdsLines[1]=new ArrayList<GffLine>();
jpayne@68 33 rnaLines[0]=new ArrayList<GffLine>();
jpayne@68 34 rnaLines[1]=new ArrayList<GffLine>();
jpayne@68 35 }
jpayne@68 36
jpayne@68 37 /*--------------------------------------------------------------*/
jpayne@68 38 /*---------------- Methods ----------------*/
jpayne@68 39 /*--------------------------------------------------------------*/
jpayne@68 40
jpayne@68 41 void clear(){
jpayne@68 42 Arrays.fill(frames, (byte)0);
jpayne@68 43 starts.clear();
jpayne@68 44 stops.clear();
jpayne@68 45 }
jpayne@68 46
jpayne@68 47 void reverseComplement(){
jpayne@68 48 AminoAcid.reverseComplementBasesInPlace(bases);
jpayne@68 49 strand=1^strand;
jpayne@68 50 }
jpayne@68 51
jpayne@68 52 void addCDS(GffLine gline){
jpayne@68 53 assert(gline.strand>=0) : gline+"\n"+gline.strand;
jpayne@68 54 cdsLines[gline.strand].add(gline);
jpayne@68 55 }
jpayne@68 56
jpayne@68 57 void addRNA(GffLine gline){
jpayne@68 58 assert(gline.strand>=0) : gline+"\n"+gline.strand;
jpayne@68 59 rnaLines[gline.strand].add(gline);
jpayne@68 60 }
jpayne@68 61
jpayne@68 62 byte[] fetch(int start, int stop){
jpayne@68 63 assert(start>=0 && stop<bases.length);
jpayne@68 64 assert(start<stop);
jpayne@68 65 return Arrays.copyOfRange(bases, start, stop+1);
jpayne@68 66 }
jpayne@68 67
jpayne@68 68 int strand(){return strand;}
jpayne@68 69
jpayne@68 70 public int length() {return bases==null ? 0 : bases.length;}
jpayne@68 71
jpayne@68 72 /*--------------------------------------------------------------*/
jpayne@68 73 /*---------------- Fields ----------------*/
jpayne@68 74 /*--------------------------------------------------------------*/
jpayne@68 75
jpayne@68 76 final String name;
jpayne@68 77 final byte[] bases;
jpayne@68 78 final byte[] frames;
jpayne@68 79 final IntList starts=new IntList(8);
jpayne@68 80 final IntList stops=new IntList(8);
jpayne@68 81 private int strand=0;
jpayne@68 82
jpayne@68 83 /** gLines[strand] holds the GffLines for that strand */
jpayne@68 84 @SuppressWarnings("unchecked")
jpayne@68 85 ArrayList<GffLine>[] cdsLines=new ArrayList[2];
jpayne@68 86 @SuppressWarnings("unchecked")
jpayne@68 87 ArrayList<GffLine>[] rnaLines=new ArrayList[2];
jpayne@68 88 }