JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / analysis / SeqsetUtils.js
1 Clazz.declarePackage ("jalview.analysis");
2 Clazz.load (null, "jalview.analysis.SeqsetUtils", ["jalview.analysis.AlignSeq", "$.SequenceIdMatcher", "jalview.datamodel.Sequence", "jalview.util.Comparison", "java.util.Hashtable", "$.Vector"], function () {
3 c$ = Clazz.declareType (jalview.analysis, "SeqsetUtils");
4 c$.SeqCharacterHash = Clazz.defineMethod (c$, "SeqCharacterHash", 
5 function (seq) {
6 var sqinfo =  new java.util.Hashtable ();
7 sqinfo.put ("Name", seq.getName ());
8 sqinfo.put ("Start",  new Integer (seq.getStart ()));
9 sqinfo.put ("End",  new Integer (seq.getEnd ()));
10 if (seq.getDescription () != null) {
11 sqinfo.put ("Description", seq.getDescription ());
12 }var sfeat =  new java.util.Vector ();
13 var sfarray = seq.getSequenceFeatures ();
14 if (sfarray != null && sfarray.length > 0) {
15 for (var i = 0; i < sfarray.length; i++) {
16 sfeat.addElement (sfarray[i]);
17 }
18 }sqinfo.put ("SeqFeatures", sfeat);
19 sqinfo.put ("PdbId", (seq.getPDBId () != null) ? seq.getPDBId () :  new java.util.Vector ());
20 sqinfo.put ("datasetSequence", (seq.getDatasetSequence () != null) ? seq.getDatasetSequence () :  new jalview.datamodel.Sequence ("THISISAPLACEHOLDER", ""));
21 return sqinfo;
22 }, "jalview.datamodel.SequenceI");
23 c$.SeqCharacterUnhash = Clazz.defineMethod (c$, "SeqCharacterUnhash", 
24 function (sq, sqinfo) {
25 var namePresent = true;
26 if (sqinfo == null) {
27 return false;
28 }var oldname = sqinfo.get ("Name");
29 var start = sqinfo.get ("Start");
30 var end = sqinfo.get ("End");
31 var sfeatures = sqinfo.get ("SeqFeatures");
32 var pdbid = sqinfo.get ("PdbId");
33 var description = sqinfo.get ("Description");
34 var seqds = sqinfo.get ("datasetSequence");
35 if (oldname == null) {
36 namePresent = false;
37 } else {
38 sq.setName (oldname);
39 }if (pdbid != null && pdbid.size () > 0) {
40 sq.setPDBId (pdbid);
41 }if ((start != null) && (end != null)) {
42 sq.setStart (start.intValue ());
43 sq.setEnd (end.intValue ());
44 }if ((sfeatures != null) && (sfeatures.size () > 0)) {
45 var sfarray =  new Array (sfeatures.size ());
46 for (var is = 0, isize = sfeatures.size (); is < isize; is++) {
47 sfarray[is] = sfeatures.elementAt (is);
48 }
49 sq.setSequenceFeatures (sfarray);
50 }if (description != null) {
51 sq.setDescription (description);
52 }if ((seqds != null) && !(seqds.getName ().equals ("THISISAPLACEHOLDER") && seqds.getLength () == 0)) {
53 sq.setDatasetSequence (seqds);
54 }return namePresent;
55 }, "jalview.datamodel.SequenceI,java.util.Hashtable");
56 c$.unique_name = Clazz.defineMethod (c$, "unique_name", 
57 function (i) {
58 return  String.instantialize ("Sequence" + i);
59 }, "~N");
60 c$.uniquify = Clazz.defineMethod (c$, "uniquify", 
61 function (sequences, write_names) {
62 var map =  new java.util.Hashtable ();
63 for (var i = 0; i < sequences.length; i++) {
64 var safename = jalview.analysis.SeqsetUtils.unique_name (i);
65 map.put (safename, jalview.analysis.SeqsetUtils.SeqCharacterHash (sequences[i]));
66 if (write_names) {
67 sequences[i].setName (safename);
68 }}
69 return map;
70 }, "~A,~B");
71 c$.deuniquify = Clazz.defineMethod (c$, "deuniquify", 
72 function (map, sequences) {
73 return jalview.analysis.SeqsetUtils.deuniquify (map, sequences, true);
74 }, "java.util.Hashtable,~A");
75 c$.deuniquify = Clazz.defineMethod (c$, "deuniquify", 
76 function (map, sequences, quiet) {
77 var matcher =  new jalview.analysis.SequenceIdMatcher (sequences);
78 var msq = null;
79 var keys = map.keys ();
80 var unmatched =  new java.util.Vector ();
81 for (var i = 0, j = sequences.length; i < j; i++) {
82 unmatched.addElement (sequences[i]);
83 }
84 while (keys.hasMoreElements ()) {
85 var key = keys.nextElement ();
86 if (Clazz.instanceOf (key, String)) {
87 if ((msq = matcher.findIdMatch (key)) != null) {
88 var sqinfo = map.get (key);
89 unmatched.removeElement (msq);
90 jalview.analysis.SeqsetUtils.SeqCharacterUnhash (msq, sqinfo);
91 } else {
92 if (!quiet) {
93 System.err.println ("Can't find '" + (key) + "' in uniquified alignment");
94 }}}}
95 if (unmatched.size () > 0 && !quiet) {
96 System.err.println ("Did not find matches for :");
97 for (var i = unmatched.elements (); i.hasMoreElements (); System.out.println ((i.nextElement ()).getName ())) {
98 ;}
99 return false;
100 }return true;
101 }, "java.util.Hashtable,~A,~B");
102 c$.getNonEmptySequenceSet = Clazz.defineMethod (c$, "getNonEmptySequenceSet", 
103 function (sequences) {
104 var ungapped =  Clazz.newBooleanArray (sequences.length, false);
105 var msflen = 0;
106 for (var i = 0, j = sequences.length; i < j; i++) {
107 var tempseq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, sequences[i].getSequenceAsString ());
108 if (tempseq.length == 0) {
109 ungapped[i] = false;
110 } else {
111 ungapped[i] = true;
112 msflen++;
113 }}
114 if (msflen == 0) {
115 return null;
116 }var mset =  new Array (msflen);
117 for (var i = 0, j = sequences.length, k = 0; i < j; i++) {
118 if (ungapped[i]) {
119 mset[k++] = sequences[i];
120 }}
121 ungapped = null;
122 return mset;
123 }, "~A");
124 });