X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2Fvamsas%2FSequencefeature.java;h=e6302fc91d5c9a2b5e59717378c6d96332acb8f2;hb=cb8e52fbbc5f725e3f7f48c672cdddb0690bd978;hp=8c3ab9927ff62fc9a4f429eda1d5eb0839488cc2;hpb=ab43013b7e357b84b4abade0dba949668dfb2a0e;p=jalview.git diff --git a/src/jalview/io/vamsas/Sequencefeature.java b/src/jalview/io/vamsas/Sequencefeature.java index 8c3ab99..e6302fc 100644 --- a/src/jalview/io/vamsas/Sequencefeature.java +++ b/src/jalview/io/vamsas/Sequencefeature.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,7 +20,14 @@ */ package jalview.io.vamsas; +import jalview.bin.Console; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceI; +import jalview.io.VamsasAppDatastore; +import jalview.util.UrlLink; + import java.util.Enumeration; +import java.util.Iterator; import java.util.Vector; import uk.ac.vamsas.objects.core.DataSetAnnotations; @@ -31,11 +38,6 @@ import uk.ac.vamsas.objects.core.RangeAnnotation; import uk.ac.vamsas.objects.core.Score; import uk.ac.vamsas.objects.core.Seg; import uk.ac.vamsas.objects.utils.Properties; -import jalview.bin.Cache; -import jalview.datamodel.SequenceFeature; -import jalview.datamodel.SequenceI; -import jalview.io.VamsasAppDatastore; -import jalview.util.UrlLink; /** * @author JimP @@ -70,6 +72,7 @@ public class Sequencefeature extends Rangetype doJvUpdate(); } + @Override public void addToDocument() { DataSetAnnotations dsa = (DataSetAnnotations) vobj; @@ -88,15 +91,14 @@ public class Sequencefeature extends Rangetype dataset.addDataSetAnnotations(dsa); } + @Override public void addFromDocument() { DataSetAnnotations dsa = (DataSetAnnotations) vobj; if (dsa.getSeqRefCount() != 1) { - Cache.log - .warn("Not binding " - + dsa.getVorbaId() - + " to Sequence Feature - has multiple dataset sequence references."); + Console.warn("Not binding " + dsa.getVorbaId() + + " to Sequence Feature - has multiple dataset sequence references."); return; } jalview.datamodel.SequenceFeature sf = (jalview.datamodel.SequenceFeature) jvobj; @@ -105,6 +107,7 @@ public class Sequencefeature extends Rangetype bindjvvobj(sf, dsa); } + @Override public void conflict() { log.warn("Untested sequencefeature conflict code"); @@ -117,6 +120,7 @@ public class Sequencefeature extends Rangetype addToDocument(); // and create a new feature in the document } + @Override public void updateToDoc() { DataSetAnnotations dsa = (DataSetAnnotations) vobj; @@ -124,8 +128,8 @@ public class Sequencefeature extends Rangetype if (dsa.getSeqRefCount() != 1) { replaceJvObjMapping(feature, null); - Cache.log - .warn("Binding of annotation to jalview feature has changed. Removing binding and recreating."); + Console.warn( + "Binding of annotation to jalview feature has changed. Removing binding and recreating."); doSync(); // re-verify bindings. } else @@ -135,14 +139,14 @@ public class Sequencefeature extends Rangetype getDSAnnotationFromJalview(dsa, feature); if (oldref != dsa.hashCode()) { - Cache.log - .debug("Updated dataset sequence annotation from feature."); + Console.debug("Updated dataset sequence annotation from feature."); addProvenance(dsa.getProvenance(), "modified"); } } } + @Override public void updateFromDoc() { DataSetAnnotations dsa = (DataSetAnnotations) vobj; @@ -151,10 +155,8 @@ public class Sequencefeature extends Rangetype { // conflicting update from document - we cannot map this feature anymore. replaceJvObjMapping(feature, null); - Cache.log - .warn("annotation (" - + dsa.getVorbaId() - + " bound to jalview feature cannot be mapped. Removing binding, deleting feature, and deleting feature."); + Console.warn("annotation (" + dsa.getVorbaId() + + " bound to jalview feature cannot be mapped. Removing binding, deleting feature, and deleting feature."); // - consider deleting the feature ? dsSeq.deleteFeature(feature); // doSync(); @@ -195,19 +197,18 @@ public class Sequencefeature extends Rangetype vSeg.setInclusive(true); if (dsa.getSegCount() > 1) { - Cache.log - .debug("About to destroy complex annotation in vamsas document mapped to sequence feature (" + Console.debug( + "About to destroy complex annotation in vamsas document mapped to sequence feature (" + dsa.getVorbaId() + ")"); } - dsa.setSeg(new Seg[] - { vSeg }); + dsa.setSeg(new Seg[] { vSeg }); dsa.setDescription(feature.getDescription()); dsa.setStatus(feature.getStatus()); if (feature.links != null && feature.links.size() > 0) { for (int i = 0, iSize = feature.links.size(); i < iSize; i++) { - String link = (String) feature.links.elementAt(i); + String link = feature.links.elementAt(i); UrlLink ulink = new UrlLink(link); if (ulink.isValid()) { @@ -220,21 +221,20 @@ public class Sequencefeature extends Rangetype } } dsa.setGroup(feature.getFeatureGroup()); - if (feature.getScore() != Float.NaN) + if (!Float.isNaN(feature.getScore())) { Score fscore = new Score(); - dsa.setScore(new Score[] - { fscore }); + dsa.setScore(new Score[] { fscore }); fscore.setContent(feature.getScore()); fscore.setName(feature.getType()); } if (feature.otherDetails != null) { - Enumeration iter = feature.otherDetails.keys(); + Iterator iter = feature.otherDetails.keySet().iterator(); Vector props = dsa.getPropertyAsReference(); - while (iter.hasMoreElements()) + while (iter.hasNext()) { - String key = (String) iter.nextElement(); + String key = iter.next(); if (!key.equalsIgnoreCase("score") && !key.equalsIgnoreCase("status")) { @@ -251,7 +251,8 @@ public class Sequencefeature extends Rangetype else if (vlu instanceof Integer) { valid = true; - nprop.setType(uk.ac.vamsas.objects.utils.Properties.INTEGERTYPE); + nprop.setType( + uk.ac.vamsas.objects.utils.Properties.INTEGERTYPE); } else if (vlu instanceof Float) { @@ -279,9 +280,39 @@ public class Sequencefeature extends Rangetype private SequenceFeature getJalviewSeqFeature(RangeAnnotation dseta) { int[] se = getBounds(dseta); - SequenceFeature sf = new jalview.datamodel.SequenceFeature( - dseta.getType(), dseta.getDescription(), dseta.getStatus(), - se[0], se[1], dseta.getGroup()); + + /* + * try to identify feature score + */ + boolean scoreFound = false; + float theScore = 0f; + String featureType = dseta.getType(); + if (dseta.getScoreCount() > 0) + { + Enumeration scr = dseta.enumerateScore(); + while (scr.hasMoreElements()) + { + Score score = (Score) scr.nextElement(); + if (score.getName().equals(featureType)) + { + theScore = score.getContent(); + scoreFound = true; + } + } + } + + SequenceFeature sf = null; + if (scoreFound) + { + sf = new SequenceFeature(featureType, dseta.getDescription(), se[0], + se[1], theScore, dseta.getGroup()); + } + else + { + sf = new SequenceFeature(featureType, dseta.getDescription(), se[0], + se[1], dseta.getGroup()); + } + sf.setStatus(dseta.getStatus()); if (dseta.getLinkCount() > 0) { Link[] links = dseta.getLink(); @@ -297,11 +328,7 @@ public class Sequencefeature extends Rangetype while (scr.hasMoreElements()) { Score score = (Score) scr.nextElement(); - if (score.getName().equals(sf.getType())) - { - sf.setScore(score.getContent()); - } - else + if (!score.getName().equals(sf.getType())) { sf.setValue(score.getName(), "" + score.getContent()); } @@ -323,7 +350,7 @@ public class Sequencefeature extends Rangetype { try { - val = new Boolean(p.getContent()); + val = Boolean.valueOf(p.getContent()); } catch (Exception e) { } @@ -332,7 +359,7 @@ public class Sequencefeature extends Rangetype { try { - val = new Float(p.getContent()); + val = Float.valueOf(p.getContent()); } catch (Exception e) { @@ -342,7 +369,7 @@ public class Sequencefeature extends Rangetype { try { - val = new Integer(p.getContent()); + val = Integer.valueOf(p.getContent()); } catch (Exception e) { }