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;
import jalview.viewmodel.seqfeatures.FeatureRendererModel;
import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
+import jalview.ws.datamodel.MappableContactMatrixI;
import jalview.ws.datamodel.alphafold.PAEContactMatrix;
import jalview.ws.jws2.Jws2Discoverer;
import jalview.ws.jws2.dm.AAConSettings;
import jalview.xml.binding.jalview.JalviewModel.Viewport.Overview;
import jalview.xml.binding.jalview.JalviewUserColours;
import jalview.xml.binding.jalview.JalviewUserColours.Colour;
+import jalview.xml.binding.jalview.MapListType;
import jalview.xml.binding.jalview.MapListType.MapListFrom;
import jalview.xml.binding.jalview.MapListType.MapListTo;
import jalview.xml.binding.jalview.Mapping;
{
for (BitSet gp : cm.getGroups())
{
- BigInteger val = new BigInteger(gp.toByteArray());
- xmlmat.getGroups().add(val.toString());
+ xmlmat.getGroups().add(stringifyBitset(gp));
}
}
if (cm.hasTree())
{
xmlmat.setCutHeight(cm.getCutHeight());
}
-
// set/get properties
+ if (cm instanceof MappableContactMatrixI)
+ {
+ jalview.util.MapList mlst = ((MappableContactMatrixI) cm)
+ .getMapFor(annotation.sequenceRef);
+ if (mlst != null)
+ {
+ MapListType mp = new MapListType();
+ List<int[]> r = mlst.getFromRanges();
+ for (int[] range : r)
+ {
+ MapListFrom mfrom = new MapListFrom();
+ mfrom.setStart(range[0]);
+ mfrom.setEnd(range[1]);
+ // mp.addMapListFrom(mfrom);
+ mp.getMapListFrom().add(mfrom);
+ }
+ r = mlst.getToRanges();
+ for (int[] range : r)
+ {
+ MapListTo mto = new MapListTo();
+ mto.setStart(range[0]);
+ mto.setEnd(range[1]);
+ // mp.addMapListTo(mto);
+ mp.getMapListTo().add(mto);
+ }
+ mp.setMapFromUnit(
+ BigInteger.valueOf(mlst.getFromRatio()));
+ mp.setMapToUnit(BigInteger.valueOf(mlst.getToRatio()));
+ xmlmat.setMapping(mp);
+ }
+ }
+ // and add to model
an.getContactmatrix().add(xmlmat);
}
}
}
+ 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);
.fromFloatStringToContacts(xmlmat.getElements(),
xmlmat.getCols().intValue(),
xmlmat.getRows().intValue());
+ jalview.util.MapList mapping = null;
+ if (xmlmat.getMapping() != null)
+ {
+ MapListType m = xmlmat.getMapping();
+ // Mapping m = dr.getMapping();
+ int fr[] = new int[m.getMapListFrom().size() * 2];
+ Iterator<MapListFrom> from = m.getMapListFrom()
+ .iterator();// enumerateMapListFrom();
+ for (int _i = 0; from.hasNext(); _i += 2)
+ {
+ MapListFrom mf = from.next();
+ fr[_i] = mf.getStart();
+ fr[_i + 1] = mf.getEnd();
+ }
+ int fto[] = new int[m.getMapListTo().size() * 2];
+ Iterator<MapListTo> to = m.getMapListTo().iterator();// enumerateMapListTo();
+ for (int _i = 0; to.hasNext(); _i += 2)
+ {
+ MapListTo mf = to.next();
+ fto[_i] = mf.getStart();
+ fto[_i + 1] = mf.getEnd();
+ }
- PAEContactMatrix newpae = new PAEContactMatrix(
- jaa.sequenceRef, elements);
+ mapping = new jalview.util.MapList(fr, fto,
+ m.getMapFromUnit().intValue(),
+ m.getMapToUnit().intValue());
+ }
List<BitSet> newgroups = new ArrayList<BitSet>();
if (xmlmat.getGroups().size() > 0)
{
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
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);
+ GroupSet grpset = new GroupSet();
+ grpset.restoreGroups(newgroups, treeMethod, nwk, thresh);
+ PAEContactMatrix newpae = new PAEContactMatrix(
+ jaa.sequenceRef, mapping, elements, grpset);
jaa.sequenceRef.addContactListFor(jaa, newpae);
}
}