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