Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / io / JnetAnnotationMaker.js
1 Clazz.declarePackage ("jalview.io");
2 Clazz.load (null, "jalview.io.JnetAnnotationMaker", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "jalview.util.MessageManager", "java.lang.Exception", "$.Float"], function () {
3 c$ = Clazz.declareType (jalview.io, "JnetAnnotationMaker");
4 c$.add_annotation = Clazz.defineMethod (c$, "add_annotation", 
5 function (prediction, al, firstSeq, noMsa) {
6 jalview.io.JnetAnnotationMaker.add_annotation (prediction, al, firstSeq, noMsa, Clazz.castNullAs ("Array"));
7 }, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B");
8 c$.add_annotation = Clazz.defineMethod (c$, "add_annotation", 
9 function (prediction, al, firstSeq, noMsa, delMap) {
10 var i = 0;
11 var preds = prediction.getSeqsAsArray ();
12 var seqRef = al.getSequenceAt (firstSeq);
13 var width = preds[0].getSequence ().length;
14 var gapmap = al.getSequenceAt (firstSeq).gapMap ();
15 if ((delMap != null && delMap.length > width) || (delMap == null && gapmap.length != width)) {
16 throw ( new Exception (jalview.util.MessageManager.formatMessage ("exception.number_of_residues_in_query_sequence_differ_from_prediction",  Clazz.newArray (-1, [(delMap == null ? "" : jalview.util.MessageManager.getString ("label.mapped")), al.getSequenceAt (firstSeq).getName (), al.getSequenceAt (firstSeq).getSequenceAsString (), Integer.$valueOf (width).toString ()]))));
17 }var annot;
18 var annotations = null;
19 var existingAnnotations = 0;
20 if (al.getAlignmentAnnotation () != null) {
21 existingAnnotations = al.getAlignmentAnnotation ().length;
22 }var sol =  new Array (al.getWidth ());
23 var firstsol = true;
24 while (i < preds.length) {
25 var id = preds[i].getName ().toUpperCase ();
26 if (id.startsWith ("LUPAS") || id.startsWith ("JNET") || id.startsWith ("JPRED")) {
27 if (id.startsWith ("JNETSOL")) {
28 var amnt = (id.endsWith ("25") ? 3 : id.endsWith ("5") ? 6 : 9);
29 for (var spos = 0; spos < width; spos++) {
30 var sposw = (delMap == null) ? gapmap[spos] : gapmap[delMap[spos]];
31 if (firstsol) {
32 sol[sposw] =  new jalview.datamodel.Annotation (0);
33 }if (preds[i].getCharAt (spos) == 'B' && (sol[sposw].value == 0 || sol[sposw].value < amnt)) {
34 sol[sposw].value = amnt;
35 }}
36 firstsol = false;
37 } else {
38 annotations =  new Array (al.getWidth ());
39 if (id.equals ("JNETPRED") || id.equals ("JNETPSSM") || id.equals ("JNETFREQ") || id.equals ("JNETHMM") || id.equals ("JNETALIGN") || id.equals ("JPRED")) {
40 if (delMap == null) {
41 for (var j = 0; j < width; j++) {
42 annotations[gapmap[j]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);
43 }
44 } else {
45 for (var j = 0; j < width; j++) {
46 annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);
47 }
48 }} else if (id.equals ("JNETCONF")) {
49 if (delMap == null) {
50 for (var j = 0; j < width; j++) {
51 var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();
52 annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);
53 }
54 } else {
55 for (var j = 0; j < width; j++) {
56 var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();
57 annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);
58 }
59 }} else {
60 if (delMap == null) {
61 for (var j = 0; j < width; j++) {
62 annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);
63 }
64 } else {
65 for (var j = 0; j < width; j++) {
66 annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);
67 }
68 }}if (id.equals ("JNETCONF")) {
69 annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations, 0, 10, 1);
70 } else {
71 annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations);
72 }if (seqRef != null) {
73 annot.createSequenceMapping (seqRef, 1, true);
74 seqRef.addAlignmentAnnotation (annot);
75 }al.addAnnotation (annot);
76 al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
77 }if (noMsa) {
78 al.deleteSequence (preds[i]);
79 }}i++;
80 }
81 if (!firstsol) {
82 annot =  new jalview.datamodel.AlignmentAnnotation ("Jnet Burial", "<html>Prediction of Solvent Accessibility<br/>levels are<ul><li>0 - Exposed</li><li>3 - 25% or more S.A. accessible</li><li>6 - 5% or more S.A. accessible</li><li>9 - Buried (<5% exposed)</li></ul>", sol, 0, 9, 1);
83 annot.validateRangeAndDisplay ();
84 if (seqRef != null) {
85 annot.createSequenceMapping (seqRef, 1, true);
86 seqRef.addAlignmentAnnotation (annot);
87 }al.addAnnotation (annot);
88 al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
89 }}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B,~A");
90 });