\r
SequenceFetcher sfetcher;\r
\r
+ private SequenceI[] alseqs;\r
+\r
public DBRefFetcher()\r
{\r
}\r
public DBRefFetcher(SequenceI[] seqs, AlignFrame af, String[] sources)\r
{\r
this.af = af;\r
+ alseqs = new SequenceI[seqs.length];\r
SequenceI[] ds = new SequenceI[seqs.length];\r
for (int i = 0; i < seqs.length; i++)\r
{\r
+ alseqs[i] = seqs[i];\r
if (seqs[i].getDatasetSequence() != null)\r
ds[i] = seqs[i].getDatasetSequence();\r
else\r
// absStart+sequence.getStart()+entrySeq.length()-1},\r
// new int[] { entry.getStart(), entry.getEnd() }, 1, 1);\r
// relocate local features for updated start\r
- if (updateRefFrame && sequence.getSequenceFeatures() != null)\r
- {\r
+ if (updateRefFrame) {\r
+ if (sequence.getSequenceFeatures() != null)\r
+ {\r
SequenceFeature[] sf = sequence.getSequenceFeatures();\r
int start = sequence.getStart();\r
int end = sequence.getEnd();\r
sf[sfi].setEnd(sf[sfi].getEnd() + startShift);\r
}\r
}\r
+ }\r
}\r
}\r
\r
// finally, update local sequence reference frame if we're allowed\r
sequence.setStart(absStart);\r
sequence.setEnd(absEnd);\r
+ // search for alignment sequences to update coordinate frame for\r
+ for (int alsq = 0; alsq<alseqs.length; alsq++)\r
+ {\r
+ if (alseqs[alsq].getDatasetSequence()==sequence)\r
+ {\r
+ String ngAlsq = AlignSeq.extractGaps("-. ",\r
+ alseqs[alsq].getSequenceAsString()).toUpperCase();\r
+ int oldstrt = alseqs[alsq].getStart();\r
+ alseqs[alsq].setStart(sequence.getSequenceAsString().toUpperCase().indexOf(ngAlsq)+sequence.getStart());\r
+ if (oldstrt != alseqs[alsq].getStart()) {\r
+ alseqs[alsq].setEnd(ngAlsq.length()+alseqs[alsq].getStart()-1);\r
+ }\r
+ }\r
+ }\r
+ // TODO: search for all other references to this dataset sequence, and update start/end\r
+ // TODO: update all AlCodonMappings which involve this alignment sequence (e.g. Q30167 cdna translation from exon2 product (vamsas demo)\r
}\r
// and remove it from the rest\r
// TODO: decide if we should remove annotated sequence from set\r