X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fproject%2FJalview2XML.java;h=913dffe52030868a1beb41543024d8df3072d1fe;hb=3176c105e6751e32129840f5bfa410921a9c25e6;hp=333c62b76c8cab16e65af0cda79aa049f61f578e;hpb=f3d6a13271e3f34dfb4e40d6a2a7df1d392f8014;p=jalview.git diff --git a/src/jalview/project/Jalview2XML.java b/src/jalview/project/Jalview2XML.java index 333c62b..6f26036 100644 --- a/src/jalview/project/Jalview2XML.java +++ b/src/jalview/project/Jalview2XML.java @@ -96,6 +96,7 @@ import jalview.datamodel.ContactMatrixI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.GeneLocus; import jalview.datamodel.GraphLine; +import jalview.datamodel.GroupSet; import jalview.datamodel.PDBEntry; import jalview.datamodel.Point; import jalview.datamodel.RnaViewerModel; @@ -1525,7 +1526,7 @@ public class Jalview2XML ov.getCanvas().getResidueColour().getRGB()); overview.setHiddenColour(ov.getCanvas().getHiddenColour().getRGB()); view.setOverview(overview); - } + } if (av.getGlobalColourScheme() instanceof jalview.schemes.UserColourScheme) { view.setBgColour(setUserColourScheme(av.getGlobalColourScheme(), @@ -2306,25 +2307,26 @@ public class Jalview2XML line.setColour(annotation.getThreshold().colour.getRGB()); an.setThresholdLine(line); } - if (annotation.graph==AlignmentAnnotation.CONTACT_MAP) + if (annotation.graph == AlignmentAnnotation.CONTACT_MAP) { - if (annotation.sequenceRef.getContactMaps()!=null) + if (annotation.sequenceRef.getContactMaps() != null) { - ContactMatrixI cm = annotation.sequenceRef.getContactMatrixFor(annotation); - if (cm!=null) + ContactMatrixI cm = annotation.sequenceRef + .getContactMatrixFor(annotation); + if (cm != null) { MatrixType xmlmat = new MatrixType(); xmlmat.setType(cm.getType()); xmlmat.setRows(BigInteger.valueOf(cm.getWidth())); xmlmat.setCols(BigInteger.valueOf(cm.getHeight())); - // consider using an opaque to/from -> allow instance to control its representation ? + // consider using an opaque to/from -> allow instance to control + // its representation ? xmlmat.setElements(ContactMatrix.contactToFloatString(cm)); if (cm.hasGroups()) { - for (BitSet gp: cm.getGroups()) + for (BitSet gp : cm.getGroups()) { - BigInteger val = new BigInteger(gp.toByteArray()); - xmlmat.getGroups().add(val.toString()); + xmlmat.getGroups().add(stringifyBitset(gp)); } } if (cm.hasTree()) @@ -2337,7 +2339,6 @@ public class Jalview2XML { xmlmat.setCutHeight(cm.getCutHeight()); } - // set/get properties if (cm instanceof MappableContactMatrixI) { @@ -2478,6 +2479,43 @@ public class Jalview2XML } + private String stringifyBitset(BitSet gp) + { + StringBuilder sb = new StringBuilder(); + for (long val : gp.toLongArray()) + { + if (sb.length() > 0) + { + sb.append(","); + } + sb.append(val); + } + return sb.toString(); + } + + private BitSet deStringifyBitset(String stringified) + { + if ("".equals(stringified) || stringified == null) + { + return new BitSet(); + } + String[] longvals = stringified.split(","); + long[] newlongvals = new long[longvals.length]; + for (int lv = 0; lv < longvals.length; lv++) + { + try + { + newlongvals[lv] = Long.valueOf(longvals[lv]); + } catch (Exception x) + { + errorMessage += "Couldn't destringify bitset from: '" + stringified + + "'"; + newlongvals[lv] = 0; + } + } + return BitSet.valueOf(newlongvals); + + } private CalcIdParam createCalcIdParam(String calcId, AlignViewport av) { AutoCalcSetting settings = av.getCalcIdSettingsFor(calcId); @@ -2698,7 +2736,7 @@ public class Jalview2XML } return vamsasSeq; } - + private Mapping createVamsasMapping(jalview.datamodel.Mapping jmp, SequenceI parentseq, SequenceI jds, boolean recurse) { @@ -3982,7 +4020,8 @@ public class Jalview2XML jaa.setCalcId(annotation.getCalcId()); if (annotation.getProperty().size() > 0) { - for (jalview.xml.binding.jalview.Property prop : annotation.getProperty()) + for (jalview.xml.binding.jalview.Property prop : annotation + .getProperty()) { jaa.setProperty(prop.getName(), prop.getValue()); } @@ -4007,12 +4046,13 @@ public class Jalview2XML xmlmat.getCols().intValue(), xmlmat.getRows().intValue()); jalview.util.MapList mapping = null; - if (xmlmat.getMapping()!=null) + if (xmlmat.getMapping() != null) { MapListType m = xmlmat.getMapping(); // Mapping m = dr.getMapping(); int fr[] = new int[m.getMapListFrom().size() * 2]; - Iterator from = m.getMapListFrom().iterator();// enumerateMapListFrom(); + Iterator from = m.getMapListFrom() + .iterator();// enumerateMapListFrom(); for (int _i = 0; from.hasNext(); _i += 2) { MapListFrom mf = from.next(); @@ -4028,34 +4068,34 @@ public class Jalview2XML fto[_i + 1] = mf.getEnd(); } - mapping = new jalview.util.MapList(fr, fto, m.getMapFromUnit().intValue(),m.getMapToUnit().intValue()); + mapping = new jalview.util.MapList(fr, fto, + m.getMapFromUnit().intValue(), + m.getMapToUnit().intValue()); } - PAEContactMatrix newpae = new PAEContactMatrix( - jaa.sequenceRef, mapping, elements); - List newgroups=new ArrayList(); - if (xmlmat.getGroups().size()>0) + List newgroups = new ArrayList(); + if (xmlmat.getGroups().size() > 0) { - for (String sgroup:xmlmat.getGroups()) + for (String sgroup : xmlmat.getGroups()) { - try { - BigInteger group = new BigInteger(sgroup); - newgroups.add(BitSet.valueOf(group.toByteArray())); - } catch (NumberFormatException nfe) - { - Console.error("Problem parsing groups for a contact matrix (\""+sgroup+"\"",nfe); - } + newgroups.add(deStringifyBitset(sgroup)); } } - String nwk=xmlmat.getNewick().size()>0 ? xmlmat.getNewick().get(0):null; - if (xmlmat.getNewick().size()>1) + String nwk = xmlmat.getNewick().size() > 0 + ? xmlmat.getNewick().get(0) + : null; + if (xmlmat.getNewick().size() > 1) { Console.log.info( "Ignoring additional clusterings for contact matrix"); } - String treeMethod = xmlmat.getTreeMethod(); - double thresh = xmlmat.getCutHeight()!=null ? xmlmat.getCutHeight() : 0; - newpae.restoreGroups(newgroups, treeMethod, nwk, thresh); + double thresh = xmlmat.getCutHeight() != null + ? xmlmat.getCutHeight() + : 0; + GroupSet grpset = new GroupSet(); + grpset.restoreGroups(newgroups, treeMethod, nwk, thresh); + PAEContactMatrix newpae = new PAEContactMatrix( + jaa.sequenceRef, mapping, elements, grpset); jaa.sequenceRef.addContactListFor(jaa, newpae); } } @@ -4303,8 +4343,8 @@ public class Jalview2XML */ protected void loadOverview(Viewport view, String version, AlignFrame af) { - if (!isVersionStringLaterThan("2.11.3", - version) && view.getOverview()==null) + if (!isVersionStringLaterThan("2.11.3", version) + && view.getOverview() == null) { return; } @@ -4451,8 +4491,8 @@ public class Jalview2XML { if (tree.isColumnWise()) { - AlignmentAnnotation aa = (AlignmentAnnotation) annotationIds.get(tree - .getColumnReference()); + AlignmentAnnotation aa = (AlignmentAnnotation) annotationIds + .get(tree.getColumnReference()); if (aa == null) { Console.warn( @@ -5010,10 +5050,11 @@ public class Jalview2XML viewport.setIncrement(safeInt(view.getConsThreshold())); viewport.setShowJVSuffix(safeBoolean(view.isShowFullId())); viewport.setRightAlignIds(safeBoolean(view.isRightAlignIds())); - viewport.setFont(new Font(view.getFontName(), - safeInt(view.getFontStyle()), safeInt(view.getFontSize())), - (view.getCharWidth()!=null) ? false : true); - if (view.getCharWidth()!=null) + viewport.setFont( + new Font(view.getFontName(), safeInt(view.getFontStyle()), + safeInt(view.getFontSize())), + (view.getCharWidth() != null) ? false : true); + if (view.getCharWidth() != null) { viewport.setCharWidth(view.getCharWidth()); viewport.setCharHeight(view.getCharHeight()); @@ -5340,7 +5381,7 @@ public class Jalview2XML + annotationId); return null; } - // belt-and-braces create a threshold line if the + // belt-and-braces create a threshold line if the // colourscheme needs one but the matchedAnnotation doesn't have one if (safeInt(viewAnnColour.getAboveThreshold()) != 0 && matchedAnnotation.getThreshold() == null)