@@ -61,7 +61,9 @@ public class SimpleAlignedSequence<S extends Sequence<C>, C extends Compound> im
6161 // cached (lazily initialized)
6262 private int numGaps = -1 ;
6363 private int numGapPositions = -1 ;
64- private int [] alignmentFromSequence , sequenceFromAlignment ;
64+
65+ private int [] alignmentFromSequence ;
66+ private int [] sequenceFromAlignment ;
6567
6668 /**
6769 * Creates an {@link AlignedSequence} for the given {@link Sequence} in a global alignment.
@@ -133,25 +135,35 @@ public void clearCache() {
133135 sequenceFromAlignment = null ;
134136 }
135137
136- @ Override
137- public int getAlignmentIndexAt (int sequenceIndex ) {
138- if (alignmentFromSequence == null ) {
139- alignmentFromSequence = new int [original .getLength ()];
140- int s = 1 , a = 1 ;
141- for (int i = 0 ; i < numBefore ; i ++, s ++) {
142- alignmentFromSequence [s - 1 ] = a ;
143- }
144- for (; s <= alignmentFromSequence .length && a <= length ; s ++, a ++) {
145- while (a <= length && isGap (a )) {
146- a ++;
147- }
148- alignmentFromSequence [s - 1 ] = a ;
149- }
150- a --;
151- for (int i = 0 ; i < numAfter ; i ++, s ++) {
152- alignmentFromSequence [s - 1 ] = a ;
138+ private void setAlignmentFromSequence () {
139+ alignmentFromSequence = new int [original .getLength ()];
140+ int s = 1 , a = 1 ;
141+ for (int i = 0 ; i < numBefore ; i ++, s ++) {
142+ alignmentFromSequence [s - 1 ] = a ;
143+ }
144+ for (; s <= alignmentFromSequence .length && a <= length ; s ++, a ++) {
145+ while (a <= length && isGap (a )) {
146+ a ++;
153147 }
148+ alignmentFromSequence [s - 1 ] = a ;
154149 }
150+ a --;
151+ for (int i = 0 ; i < numAfter ; i ++, s ++) {
152+ alignmentFromSequence [s - 1 ] = a ;
153+ }
154+ }
155+
156+ @ Override
157+ public int [] getAlignmentFromSequence () {
158+ if (alignmentFromSequence == null )
159+ setAlignmentFromSequence ();
160+ return alignmentFromSequence ;
161+ }
162+
163+ @ Override
164+ public int getAlignmentIndexAt (int sequenceIndex ) {
165+ if (alignmentFromSequence == null )
166+ setAlignmentFromSequence ();
155167 return alignmentFromSequence [sequenceIndex - 1 ];
156168 }
157169
@@ -198,21 +210,31 @@ public int getOverlapCount() {
198210 return 1 ;
199211 }
200212
201- @ Override
202- public int getSequenceIndexAt (int alignmentIndex ) {
203- if (sequenceFromAlignment == null ) {
204- sequenceFromAlignment = new int [length ];
205- int a = 1 , s = numBefore + 1 ;
206- for (int i = 0 ; i < getStart ().getPosition (); i ++, a ++) {
207- sequenceFromAlignment [a - 1 ] = s ;
208- }
209- for (; a <= length ; a ++) {
210- if (!isGap (a )) {
211- s ++;
212- }
213- sequenceFromAlignment [a - 1 ] = s ;
213+ private void setSequenceFromAlignment () {
214+ sequenceFromAlignment = new int [length ];
215+ int a = 1 , s = numBefore + 1 ;
216+ for (int i = 0 ; i < getStart ().getPosition (); i ++, a ++) {
217+ sequenceFromAlignment [a - 1 ] = s ;
218+ }
219+ for (; a <= length ; a ++) {
220+ if (!isGap (a )) {
221+ s ++;
214222 }
223+ sequenceFromAlignment [a - 1 ] = s ;
215224 }
225+ }
226+
227+ @ Override
228+ public int [] getSequenceFromAlignment () {
229+ if (sequenceFromAlignment == null )
230+ setSequenceFromAlignment ();
231+ return sequenceFromAlignment ;
232+ }
233+
234+ @ Override
235+ public int getSequenceIndexAt (int alignmentIndex ) {
236+ if (sequenceFromAlignment == null )
237+ setSequenceFromAlignment ();
216238 return sequenceFromAlignment [alignmentIndex - 1 ];
217239 }
218240
0 commit comments