1 Clazz.declarePackage ("jalview.analysis");
\r
2 Clazz.load (null, "jalview.analysis.AlignmentUtils", ["jalview.analysis.CodonComparator", "jalview.datamodel.AlignedCodonFrame", "$.Alignment", "$.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.FeatureProperties", "$.SearchResults", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.DBRefUtils", "$.MapList", "$.MappingUtils", "java.lang.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.HashSet", "$.LinkedHashMap", "$.LinkedHashSet", "$.TreeMap"], function () {
\r
3 c$ = Clazz.declareType (jalview.analysis, "AlignmentUtils");
\r
4 c$.expandContext = Clazz.defineMethod (c$, "expandContext",
\r
5 function (core, flankSize) {
\r
6 var sq = new java.util.ArrayList ();
\r
8 for (var s, $s = core.getSequences ().iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
\r
9 var newSeq = s.deriveSequence ();
\r
10 var newSeqStart = newSeq.getStart () - 1;
\r
11 if (newSeqStart > maxoffset && newSeq.getDatasetSequence ().getStart () < s.getStart ()) {
\r
12 maxoffset = newSeqStart;
\r
15 if (flankSize > -1) {
\r
16 maxoffset = Math.min (maxoffset, flankSize);
\r
17 }for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
\r
19 while (ds.getDatasetSequence () != null) {
\r
20 ds = ds.getDatasetSequence ();
\r
22 var s_end = s.findPosition (s.getStart () + s.getLength ());
\r
23 var ustream_ds = s.getStart () - ds.getStart ();
\r
24 var dstream_ds = ds.getEnd () - s_end;
\r
25 var offset = maxoffset - ustream_ds;
\r
26 if (flankSize >= 0) {
\r
27 if (flankSize < ustream_ds) {
\r
28 offset = maxoffset - flankSize;
\r
29 ustream_ds = flankSize;
\r
30 }if (flankSize <= dstream_ds) {
\r
31 dstream_ds = flankSize - 1;
\r
32 }}var upstream = String.instantialize (ds.getSequence (s.getStart () - 1 - ustream_ds, s.getStart () - 1)).toLowerCase ().toCharArray ();
\r
33 var downstream = String.instantialize (ds.getSequence (s_end - 1, s_end + dstream_ds)).toLowerCase ().toCharArray ();
\r
34 var coreseq = s.getSequence ();
\r
35 var nseq = Clazz.newCharArray (offset + upstream.length + downstream.length + coreseq.length, '\0');
\r
36 var c = core.getGapCharacter ();
\r
38 for (; p < offset; p++) {
\r
41 System.arraycopy (upstream, 0, nseq, p, upstream.length);
\r
42 System.arraycopy (coreseq, 0, nseq, p + upstream.length, coreseq.length);
\r
43 System.arraycopy (downstream, 0, nseq, p + coreseq.length + upstream.length, downstream.length);
\r
44 s.setSequence ( String.instantialize (nseq));
\r
45 s.setStart (s.getStart () - ustream_ds);
\r
46 s.setEnd (s_end + downstream.length);
\r
48 var newAl = new jalview.datamodel.Alignment (sq.toArray ( new Array (0)));
\r
49 for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
\r
50 if (s.getAnnotation () != null) {
\r
51 for (var aa, $aa = 0, $$aa = s.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
\r
52 aa.adjustForAlignment ();
\r
53 newAl.addAnnotation (aa);
\r
56 newAl.setDataset (core.getDataset ());
\r
58 }, "jalview.datamodel.AlignmentI,~N");
\r
59 c$.getSequenceIndex = Clazz.defineMethod (c$, "getSequenceIndex",
\r
60 function (al, seq) {
\r
63 for (var alSeq, $alSeq = al.getSequences ().iterator (); $alSeq.hasNext () && ((alSeq = $alSeq.next ()) || true);) {
\r
64 if (alSeq === seq) {
\r
70 }, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
\r
71 c$.getSequencesByName = Clazz.defineMethod (c$, "getSequencesByName",
\r
73 var theMap = new java.util.LinkedHashMap ();
\r
74 for (var seq, $seq = al.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
\r
75 var name = seq.getName ();
\r
77 var seqs = theMap.get (name);
\r
79 seqs = new java.util.ArrayList ();
\r
80 theMap.put (name, seqs);
\r
84 }, "jalview.datamodel.AlignmentI");
\r
85 c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna",
\r
86 function (proteinAlignment, cdnaAlignment) {
\r
87 if (proteinAlignment == null || cdnaAlignment == null) {
\r
89 }var mappedDna = new java.util.HashSet ();
\r
90 var mappedProtein = new java.util.HashSet ();
\r
91 var mappingPerformed = jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, true);
\r
92 mappingPerformed = new Boolean (mappingPerformed | jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, false)).valueOf ();
\r
93 return mappingPerformed;
\r
94 }, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
\r
95 c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna",
\r
96 function (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, xrefsOnly) {
\r
97 var mappingPerformed = false;
\r
98 var thisSeqs = proteinAlignment.getSequences ();
\r
99 for (var aaSeq, $aaSeq = thisSeqs.iterator (); $aaSeq.hasNext () && ((aaSeq = $aaSeq.next ()) || true);) {
\r
100 var proteinMapped = false;
\r
101 var acf = new jalview.datamodel.AlignedCodonFrame ();
\r
102 for (var cdnaSeq, $cdnaSeq = cdnaAlignment.getSequences ().iterator (); $cdnaSeq.hasNext () && ((cdnaSeq = $cdnaSeq.next ()) || true);) {
\r
103 if (xrefsOnly && !jalview.analysis.AlignmentUtils.haveCrossRef (aaSeq, cdnaSeq)) {
\r
105 }if (!xrefsOnly && (mappedProtein.contains (aaSeq) || mappedDna.contains (cdnaSeq))) {
\r
107 }if (!jalview.analysis.AlignmentUtils.mappingExists (proteinAlignment.getCodonFrames (), aaSeq.getDatasetSequence (), cdnaSeq.getDatasetSequence ())) {
\r
108 var map = jalview.analysis.AlignmentUtils.mapProteinToCdna (aaSeq, cdnaSeq);
\r
110 acf.addMap (cdnaSeq, aaSeq, map);
\r
111 mappingPerformed = true;
\r
112 proteinMapped = true;
\r
113 mappedDna.add (cdnaSeq);
\r
114 mappedProtein.add (aaSeq);
\r
116 if (proteinMapped) {
\r
117 proteinAlignment.addCodonFrame (acf);
\r
119 return mappingPerformed;
\r
120 }, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI,java.util.Set,java.util.Set,~B");
\r
121 c$.mappingExists = Clazz.defineMethod (c$, "mappingExists",
\r
122 function (set, aaSeq, cdnaSeq) {
\r
124 for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
\r
125 if (cdnaSeq === acf.getDnaForAaSeq (aaSeq)) {
\r
129 }, "java.util.Set,jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
\r
130 c$.mapProteinToCdna = Clazz.defineMethod (c$, "mapProteinToCdna",
\r
131 function (proteinSeq, cdnaSeq) {
\r
132 var proteinDataset = proteinSeq.getDatasetSequence ();
\r
133 var aaSeqChars = proteinDataset != null ? proteinDataset.getSequence () : proteinSeq.getSequence ();
\r
134 var cdnaDataset = cdnaSeq.getDatasetSequence ();
\r
135 var cdnaSeqChars = cdnaDataset != null ? cdnaDataset.getSequence () : cdnaSeq.getSequence ();
\r
136 if (aaSeqChars == null || cdnaSeqChars == null) {
\r
138 }var mappedLength = 3 * aaSeqChars.length;
\r
139 var cdnaLength = cdnaSeqChars.length;
\r
141 var cdnaEnd = cdnaLength;
\r
142 var proteinStart = 1;
\r
143 var proteinEnd = aaSeqChars.length;
\r
144 if (cdnaLength != mappedLength && cdnaLength > 2) {
\r
145 var lastCodon = String.valueOf (cdnaSeqChars, cdnaLength - 3, 3).toUpperCase ();
\r
146 for (var stop, $stop = jalview.schemes.ResidueProperties.STOP.iterator (); $stop.hasNext () && ((stop = $stop.next ()) || true);) {
\r
147 if (lastCodon.equals (stop)) {
\r
152 }if (cdnaLength != mappedLength && cdnaLength > 2 && String.valueOf (cdnaSeqChars, 0, 3).toUpperCase ().equals (jalview.schemes.ResidueProperties.START)) {
\r
155 }if (cdnaLength != mappedLength) {
\r
157 }if (!jalview.analysis.AlignmentUtils.translatesAs (cdnaSeqChars, cdnaStart - 1, aaSeqChars)) {
\r
159 }var map = new jalview.util.MapList ( Clazz.newIntArray (-1, [cdnaStart, cdnaEnd]), Clazz.newIntArray (-1, [1, proteinEnd]), 3, 1);
\r
161 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
\r
162 c$.translatesAs = Clazz.defineMethod (c$, "translatesAs",
\r
163 function (cdnaSeqChars, cdnaStart, aaSeqChars) {
\r
165 for (var i = cdnaStart; i < cdnaSeqChars.length - 2 && aaResidue < aaSeqChars.length; i += 3, aaResidue++) {
\r
166 var codon = String.valueOf (cdnaSeqChars, i, 3);
\r
167 var translated = jalview.schemes.ResidueProperties.codonTranslate (codon);
\r
168 var aaRes = aaSeqChars[aaResidue];
\r
169 if ((translated == null || "STOP".equals (translated)) && aaRes == 'X') {
\r
171 }if (translated == null || !(aaRes == translated.charAt (0))) {
\r
174 return (aaResidue == aaSeqChars.length);
\r
176 c$.alignSequenceAs = Clazz.defineMethod (c$, "alignSequenceAs",
\r
177 function (seq, al, gap, preserveMappedGaps, preserveUnmappedGaps) {
\r
178 var mappings = al.getCodonFrame (seq);
\r
179 if (mappings == null || mappings.isEmpty ()) {
\r
181 }var alignFrom = null;
\r
182 var mapping = null;
\r
183 for (var mp, $mp = mappings.iterator (); $mp.hasNext () && ((mp = $mp.next ()) || true);) {
\r
184 alignFrom = mp.findAlignedSequence (seq.getDatasetSequence (), al);
\r
185 if (alignFrom != null) {
\r
189 if (alignFrom == null) {
\r
191 }jalview.analysis.AlignmentUtils.alignSequenceAs (seq, alignFrom, mapping, gap, al.getGapCharacter (), preserveMappedGaps, preserveUnmappedGaps);
\r
193 }, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,~S,~B,~B");
\r
194 c$.alignSequenceAs = Clazz.defineMethod (c$, "alignSequenceAs",
\r
195 function (alignTo, alignFrom, mapping, myGap, sourceGap, preserveMappedGaps, preserveUnmappedGaps) {
\r
196 var thisSeq = alignTo.getSequence ();
\r
197 var thatAligned = alignFrom.getSequence ();
\r
198 var thisAligned = new StringBuilder (2 * thisSeq.length);
\r
199 var thisSeqPos = 0;
\r
200 var sourceDsPos = 0;
\r
201 var basesWritten = 0;
\r
202 var myGapChar = myGap.charAt (0);
\r
203 var ratio = myGap.length;
\r
204 var sourceGapMappedLength = 0;
\r
205 var inExon = false;
\r
206 for (var sourceChar, $sourceChar = 0, $$sourceChar = thatAligned; $sourceChar < $$sourceChar.length && ((sourceChar = $$sourceChar[$sourceChar]) || true); $sourceChar++) {
\r
207 if (sourceChar == sourceGap) {
\r
208 sourceGapMappedLength += ratio;
\r
211 var mappedPos = mapping.getMappedRegion (alignTo, alignFrom, sourceDsPos);
\r
212 if (mappedPos == null) {
\r
213 System.err.println ("Can't align: no codon mapping to residue " + sourceDsPos + "(" + sourceChar + ")");
\r
215 }var mappedCodonStart = mappedPos[0];
\r
216 var mappedCodonEnd = mappedPos[mappedPos.length - 1];
\r
217 var trailingCopiedGap = new StringBuilder ();
\r
218 var intronLength = 0;
\r
219 while (basesWritten < mappedCodonEnd && thisSeqPos < thisSeq.length) {
\r
220 var c = thisSeq[thisSeqPos++];
\r
221 if (c != myGapChar) {
\r
223 if (basesWritten < mappedCodonStart) {
\r
224 if (preserveUnmappedGaps && trailingCopiedGap.length () > 0) {
\r
225 thisAligned.append (trailingCopiedGap.toString ());
\r
226 intronLength += trailingCopiedGap.length ();
\r
227 trailingCopiedGap = new StringBuilder ();
\r
231 var startOfCodon = basesWritten == mappedCodonStart;
\r
232 var gapsToAdd = jalview.analysis.AlignmentUtils.calculateGapsToInsert (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingCopiedGap.length (), intronLength, startOfCodon);
\r
233 for (var i = 0; i < gapsToAdd; i++) {
\r
234 thisAligned.append (myGapChar);
\r
236 sourceGapMappedLength = 0;
\r
238 }thisAligned.append (c);
\r
239 trailingCopiedGap = new StringBuilder ();
\r
241 if (inExon && preserveMappedGaps) {
\r
242 trailingCopiedGap.append (myGapChar);
\r
243 } else if (!inExon && preserveUnmappedGaps) {
\r
244 trailingCopiedGap.append (myGapChar);
\r
247 while (thisSeqPos < thisSeq.length) {
\r
248 var c = thisSeq[thisSeqPos++];
\r
249 if (c != myGapChar || preserveUnmappedGaps) {
\r
250 thisAligned.append (c);
\r
252 alignTo.setSequence ( String.instantialize (thisAligned));
\r
253 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,~S,~S,~B,~B");
\r
254 c$.calculateGapsToInsert = Clazz.defineMethod (c$, "calculateGapsToInsert",
\r
255 function (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingGapLength, intronLength, startOfCodon) {
\r
257 if (startOfCodon) {
\r
258 if (inExon && !preserveMappedGaps) {
\r
259 trailingGapLength = 0;
\r
260 }if (!inExon && !(preserveMappedGaps && preserveUnmappedGaps)) {
\r
261 trailingGapLength = 0;
\r
263 gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);
\r
265 if (intronLength + trailingGapLength <= sourceGapMappedLength) {
\r
266 gapsToAdd = sourceGapMappedLength - intronLength;
\r
268 gapsToAdd = Math.min (intronLength + trailingGapLength - sourceGapMappedLength, trailingGapLength);
\r
270 if (!preserveMappedGaps) {
\r
271 trailingGapLength = 0;
\r
272 }gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);
\r
274 }, "~B,~B,~N,~B,~N,~N,~B");
\r
275 c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation",
\r
276 function (sequences, gapCharacter, mappings) {
\r
277 var alignedSeqs = new java.util.ArrayList ();
\r
278 for (var seq, $seq = sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
\r
279 var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mappings);
\r
280 alignedSeqs.addAll (mapped);
\r
282 return alignedSeqs;
\r
283 }, "java.util.List,~S,java.util.Set");
\r
284 c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation",
\r
285 function (seq, gapCharacter, mappings) {
\r
286 var result = new java.util.ArrayList ();
\r
287 for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
\r
288 if (mapping.involvesSequence (seq)) {
\r
289 var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mapping);
\r
290 if (mapped != null) {
\r
291 result.add (mapped);
\r
294 }, "jalview.datamodel.SequenceI,~S,java.util.Set");
\r
295 c$.getAlignedTranslation = Clazz.defineMethod (c$, "getAlignedTranslation",
\r
296 function (seq, gapCharacter, mapping) {
\r
297 var gap = String.valueOf (gapCharacter);
\r
300 var mapTo = mapping.getDnaForAaSeq (seq);
\r
301 if (mapTo != null) {
\r
303 gap = String.valueOf ( Clazz.newCharArray (-1, [gapCharacter, gapCharacter, gapCharacter]));
\r
305 mapTo = mapping.getAaForDnaSeq (seq);
\r
307 }var newseq = new StringBuilder (seq.getLength () * (toDna ? 3 : 1));
\r
309 var phrase = Clazz.newIntArray (fromRatio, 0);
\r
310 var phraseOffset = 0;
\r
313 var alignedSeq = new jalview.datamodel.Sequence ("", "");
\r
314 for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
\r
315 if (c == gapCharacter) {
\r
317 if (gapWidth >= fromRatio) {
\r
318 newseq.append (gap);
\r
321 phrase[phraseOffset++] = residueNo + 1;
\r
322 if (phraseOffset == fromRatio) {
\r
323 var sr = new jalview.datamodel.SearchResults ();
\r
324 for (var pos, $pos = 0, $$pos = phrase; $pos < $$pos.length && ((pos = $$pos[$pos]) || true); $pos++) {
\r
325 mapping.markMappedRegion (seq, pos, sr);
\r
327 newseq.append (sr.toString ());
\r
330 var mappedTo = sr.getResultSequence (0);
\r
331 alignedSeq.setName (mappedTo.getName ());
\r
332 alignedSeq.setDescription (mappedTo.getDescription ());
\r
333 alignedSeq.setDatasetSequence (mappedTo);
\r
337 alignedSeq.setSequence (newseq.toString ());
\r
339 }, "jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame");
\r
340 c$.alignProteinAsDna = Clazz.defineMethod (c$, "alignProteinAsDna",
\r
341 function (protein, dna) {
\r
342 var mappings = protein.getCodonFrames ();
\r
343 var alignedCodons = new java.util.TreeMap ( new jalview.analysis.CodonComparator ());
\r
344 for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {
\r
345 for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
\r
346 var seqMap = mapping.getMappingForSequence (dnaSeq);
\r
347 var prot = mapping.findAlignedSequence (dnaSeq.getDatasetSequence (), protein);
\r
348 if (prot != null) {
\r
349 jalview.analysis.AlignmentUtils.addCodonPositions (dnaSeq, prot, protein.getGapCharacter (), seqMap, alignedCodons);
\r
352 return jalview.analysis.AlignmentUtils.alignProteinAs (protein, alignedCodons);
\r
353 }, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
\r
354 c$.alignProteinAs = Clazz.defineMethod (c$, "alignProteinAs",
\r
355 function (protein, alignedCodons) {
\r
356 var alignedWidth = alignedCodons.size ();
\r
357 var gaps = Clazz.newCharArray (alignedWidth, '\0');
\r
358 java.util.Arrays.fill (gaps, protein.getGapCharacter ());
\r
359 var allGaps = String.valueOf (gaps);
\r
360 for (var seq, $seq = protein.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
\r
361 seq.setSequence (allGaps);
\r
364 for (var codon, $codon = alignedCodons.keySet ().iterator (); $codon.hasNext () && ((codon = $codon.next ()) || true);) {
\r
365 var columnResidues = alignedCodons.get (codon);
\r
366 for (var entry, $entry = columnResidues.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {
\r
367 entry.getKey ().getSequence ()[column] = entry.getValue ().charAt (0);
\r
372 }, "jalview.datamodel.AlignmentI,java.util.Map");
\r
373 c$.addCodonPositions = Clazz.defineMethod (c$, "addCodonPositions",
\r
374 function (dna, protein, gapChar, seqMap, alignedCodons) {
\r
375 var codons = seqMap.getCodonIterator (dna, gapChar);
\r
376 while (codons.hasNext ()) {
\r
377 var codon = codons.next ();
\r
378 var seqProduct = alignedCodons.get (codon);
\r
379 if (seqProduct == null) {
\r
380 seqProduct = new java.util.HashMap ();
\r
381 alignedCodons.put (codon, seqProduct);
\r
382 }seqProduct.put (protein, codon.product);
\r
384 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S,jalview.datamodel.Mapping,java.util.Map");
\r
385 c$.isMappable = Clazz.defineMethod (c$, "isMappable",
\r
386 function (al1, al2) {
\r
387 if (al1.isNucleotide () == al2.isNucleotide ()) {
\r
389 }var dna = al1.isNucleotide () ? al1 : al2;
\r
390 var protein = dna === al1 ? al2 : al1;
\r
391 var mappings = protein.getCodonFrames ();
\r
392 for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {
\r
393 for (var proteinSeq, $proteinSeq = protein.getSequences ().iterator (); $proteinSeq.hasNext () && ((proteinSeq = $proteinSeq.next ()) || true);) {
\r
394 if (jalview.analysis.AlignmentUtils.isMappable (dnaSeq, proteinSeq, mappings)) {
\r
399 }, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
\r
400 c$.isMappable = Clazz.defineMethod (c$, "isMappable",
\r
401 function (dnaSeq, proteinSeq, mappings) {
\r
402 var dnaDs = dnaSeq.getDatasetSequence () == null ? dnaSeq : dnaSeq.getDatasetSequence ();
\r
403 var proteinDs = proteinSeq.getDatasetSequence () == null ? proteinSeq : proteinSeq.getDatasetSequence ();
\r
404 for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
\r
405 if (proteinDs === mapping.getAaForDnaSeq (dnaDs)) {
\r
408 return jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinDs, dnaDs) != null;
\r
409 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,java.util.Set");
\r
410 c$.findAddableReferenceAnnotations = Clazz.defineMethod (c$, "findAddableReferenceAnnotations",
\r
411 function (sequenceScope, labelForCalcId, candidates, al) {
\r
412 if (sequenceScope == null) {
\r
414 }for (var seq, $seq = sequenceScope.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
\r
415 var dataset = seq.getDatasetSequence ();
\r
416 if (dataset == null) {
\r
418 }var datasetAnnotations = dataset.getAnnotation ();
\r
419 if (datasetAnnotations == null) {
\r
421 }var result = new java.util.ArrayList ();
\r
422 for (var dsann, $dsann = 0, $$dsann = datasetAnnotations; $dsann < $$dsann.length && ((dsann = $$dsann[$dsann]) || true); $dsann++) {
\r
423 var matchedAlignmentAnnotations = al.findAnnotations (seq, dsann.getCalcId (), dsann.label);
\r
424 if (!matchedAlignmentAnnotations.iterator ().hasNext ()) {
\r
425 result.add (dsann);
\r
426 if (labelForCalcId != null) {
\r
427 labelForCalcId.put (dsann.getCalcId (), dsann.label);
\r
429 if (!result.isEmpty ()) {
\r
430 candidates.put (seq, result);
\r
432 }, "java.util.List,java.util.Map,java.util.Map,jalview.datamodel.AlignmentI");
\r
433 c$.addReferenceAnnotations = Clazz.defineMethod (c$, "addReferenceAnnotations",
\r
434 function (annotations, alignment, selectionGroup) {
\r
435 for (var seq, $seq = annotations.keySet ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
\r
436 for (var ann, $ann = annotations.get (seq).iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
\r
437 var copyAnn = new jalview.datamodel.AlignmentAnnotation (ann);
\r
439 var endRes = ann.annotations.length;
\r
440 if (selectionGroup != null) {
\r
441 startRes = selectionGroup.getStartRes ();
\r
442 endRes = selectionGroup.getEndRes ();
\r
443 }copyAnn.restrict (startRes, endRes);
\r
444 if (!seq.hasAnnotation (ann)) {
\r
445 seq.addAlignmentAnnotation (copyAnn);
\r
446 }copyAnn.adjustForAlignment ();
\r
447 alignment.addAnnotation (copyAnn);
\r
448 copyAnn.visible = true;
\r
451 }, "java.util.Map,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
\r
452 c$.showOrHideSequenceAnnotations = Clazz.defineMethod (c$, "showOrHideSequenceAnnotations",
\r
453 function (al, types, forSequences, anyType, doShow) {
\r
454 for (var aa, $aa = 0, $$aa = al.getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
\r
455 if (anyType || types.contains (aa.label)) {
\r
456 if ((aa.sequenceRef != null) && (forSequences == null || forSequences.contains (aa.sequenceRef))) {
\r
457 aa.visible = doShow;
\r
459 }, "jalview.datamodel.AlignmentI,java.util.Collection,java.util.List,~B,~B");
\r
460 c$.haveCrossRef = Clazz.defineMethod (c$, "haveCrossRef",
\r
461 function (seq1, seq2) {
\r
462 return jalview.analysis.AlignmentUtils.hasCrossRef (seq1, seq2) || jalview.analysis.AlignmentUtils.hasCrossRef (seq2, seq1);
\r
463 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
\r
464 c$.hasCrossRef = Clazz.defineMethod (c$, "hasCrossRef",
\r
465 function (seq1, seq2) {
\r
466 if (seq1 == null || seq2 == null) {
\r
468 }var name = seq2.getName ();
\r
469 var xrefs = seq1.getDBRef ();
\r
470 if (xrefs != null) {
\r
471 for (var xref, $xref = 0, $$xref = xrefs; $xref < $$xref.length && ((xref = $$xref[$xref]) || true); $xref++) {
\r
472 var xrefName = xref.getSource () + "|" + xref.getAccessionId ();
\r
473 if (xrefName.equalsIgnoreCase (name)) {
\r
477 }, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
\r
478 c$.makeExonAlignment = Clazz.defineMethod (c$, "makeExonAlignment",
\r
479 function (dna, mappings) {
\r
480 var newMappings = new java.util.LinkedHashSet ();
\r
481 var exonSequences = new java.util.ArrayList ();
\r
482 for (var dnaSeq, $dnaSeq = 0, $$dnaSeq = dna; $dnaSeq < $$dnaSeq.length && ((dnaSeq = $$dnaSeq[$dnaSeq]) || true); $dnaSeq++) {
\r
483 var ds = dnaSeq.getDatasetSequence ();
\r
484 var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (ds, mappings);
\r
485 for (var acf, $acf = seqMappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
\r
486 var newMapping = new jalview.datamodel.AlignedCodonFrame ();
\r
487 var mappedExons = jalview.analysis.AlignmentUtils.makeExonSequences (ds, acf, newMapping);
\r
488 if (!mappedExons.isEmpty ()) {
\r
489 exonSequences.addAll (mappedExons);
\r
490 newMappings.add (newMapping);
\r
493 var al = new jalview.datamodel.Alignment (exonSequences.toArray ( new Array (exonSequences.size ())));
\r
494 al.setDataset (null);
\r
496 mappings.addAll (newMappings);
\r
498 }, "~A,java.util.Set");
\r
499 c$.makeExonSequences = Clazz.defineMethod (c$, "makeExonSequences",
\r
500 function (dnaSeq, mapping, newMapping) {
\r
501 var exonSequences = new java.util.ArrayList ();
\r
502 var seqMappings = mapping.getMappingsForSequence (dnaSeq);
\r
503 var dna = dnaSeq.getSequence ();
\r
504 for (var seqMapping, $seqMapping = seqMappings.iterator (); $seqMapping.hasNext () && ((seqMapping = $seqMapping.next ()) || true);) {
\r
505 var newSequence = new StringBuilder (dnaSeq.getLength ());
\r
506 var dnaExonRanges = seqMapping.getMap ().getFromRanges ();
\r
507 for (var range, $range = dnaExonRanges.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
\r
508 for (var pos = range[0]; pos <= range[1]; pos++) {
\r
509 newSequence.append (dna[pos - 1]);
\r
512 var exon = new jalview.datamodel.Sequence (dnaSeq.getName (), newSequence.toString ());
\r
513 var cdsAccId = jalview.datamodel.FeatureProperties.getCodingFeature (jalview.datamodel.DBRefSource.EMBL);
\r
514 var cdsRefs = jalview.util.DBRefUtils.selectRefs (seqMapping.getTo ().getDBRef (), jalview.datamodel.DBRefSource.CODINGDBS);
\r
515 if (cdsRefs != null) {
\r
516 for (var cdsRef, $cdsRef = 0, $$cdsRef = cdsRefs; $cdsRef < $$cdsRef.length && ((cdsRef = $$cdsRef[$cdsRef]) || true); $cdsRef++) {
\r
517 exon.addDBRef ( new jalview.datamodel.DBRefEntry (cdsRef));
\r
518 cdsAccId = cdsRef.getAccessionId ();
\r
520 }exon.setName (exon.getName () + "|" + cdsAccId);
\r
521 exon.createDatasetSequence ();
\r
522 var exonRange = new java.util.ArrayList ();
\r
523 exonRange.add ( Clazz.newIntArray (-1, [1, newSequence.length ()]));
\r
524 var map = new jalview.util.MapList (exonRange, seqMapping.getMap ().getToRanges (), 3, 1);
\r
525 newMapping.addMap (exon.getDatasetSequence (), seqMapping.getTo (), map);
\r
526 var cdsToDnaMap = new jalview.util.MapList (dnaExonRanges, exonRange, 1, 1);
\r
527 newMapping.addMap (dnaSeq, exon.getDatasetSequence (), cdsToDnaMap);
\r
528 exonSequences.add (exon);
\r
530 return exonSequences;
\r
531 }, "jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,jalview.datamodel.AlignedCodonFrame");
\r