1 Clazz.declarePackage ("jalview.analysis.scoremodels");
2 Clazz.load (["jalview.api.analysis.ScoreModelI", "$.ViewBasedAnalysisI"], "jalview.analysis.scoremodels.FeatureScoreModel", ["jalview.util.Comparison", "java.util.ArrayList", "$.Arrays", "$.Hashtable"], function () {
3 c$ = Clazz.decorateAsClass (function () {
5 Clazz.instantialize (this, arguments);
6 }, jalview.analysis.scoremodels, "FeatureScoreModel", null, [jalview.api.analysis.ScoreModelI, jalview.api.analysis.ViewBasedAnalysisI]);
7 Clazz.overrideMethod (c$, "configureFromAlignmentView",
9 this.fr = view.cloneFeatureRenderer ();
11 }, "jalview.api.AlignmentViewPanel");
12 Clazz.overrideMethod (c$, "findDistances",
15 var dft = java.util.Arrays.asList (this.fr.getDisplayedFeatureTypes ());
17 nofeats = dft.size ();
18 }var sequenceString = seqData.getVisibleAlignment (jalview.util.Comparison.GapChars.charAt (0)).getSequencesArray ();
19 var noseqs = sequenceString.length;
20 var cpwidth = seqData.getWidth ();
21 var distance = Clazz.newFloatArray (noseqs, noseqs, 0);
23 for (var d, $d = 0, $$d = distance; $d < $$d.length && ((d = $$d[$d]) || true); $d++) {
24 for (var i = 0; i < d.length; d[i++] = 0) {
29 for (var cpos = 0; cpos < cpwidth; cpos++) {
30 var sfap = new java.util.ArrayList ();
31 for (var i = 0; i < noseqs; i++) {
32 var types = new java.util.Hashtable ();
33 var sfs = this.fr.findFeaturesAtRes (sequenceString[i], sequenceString[i].findPosition (cpos));
34 for (var sf, $sf = sfs.iterator (); $sf.hasNext () && ((sf = $sf.next ()) || true);) {
35 types.put (sf.getType (), sf);
39 for (var i = 0; i < (noseqs - 1); i++) {
42 }for (var j = i + 1; j < noseqs; j++) {
44 var fi = sfap.get (i);
46 var fj = sfap.get (j);
47 if (fi.size () > fj.size ()) {
52 }for (var k, $k = fi.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
57 distance[i][j] += (fi.size () + fk.size () - 2 * sfcommon);
58 distance[j][i] += distance[i][j];
62 for (var i = 0; i < noseqs; i++) {
63 for (var j = i + 1; j < noseqs; j++) {
64 distance[i][j] /= cpwidth;
65 distance[j][i] = distance[i][j];
69 }, "jalview.datamodel.AlignmentView");
70 Clazz.overrideMethod (c$, "getName",
72 return "Sequence Feature Similarity";
74 Clazz.overrideMethod (c$, "isDNA",
78 Clazz.overrideMethod (c$, "isProtein",
82 Clazz.overrideMethod (c$, "toString",
84 return "Score between sequences based on hamming distance between binary vectors marking features displayed at each column";