import jalview.gui.TreePanel;
import jalview.io.DataSourceType;
import jalview.io.FileFormat;
+import jalview.io.NewickFile;
import jalview.renderer.ResidueShaderI;
import jalview.schemes.AnnotationColourGradient;
import jalview.schemes.ColourSchemeI;
private Map<RnaModel, String> rnaSessions = new HashMap<>();
/**
+ * A helper method for safely using the value of an optional attribute that
+ * may be null if not present in the XML. Answers the boolean value, or false
+ * if null.
+ *
+ * @param b
+ * @return
+ */
+ public static boolean safeBoolean(Boolean b)
+ {
+ return b == null ? false : b.booleanValue();
+ }
+
+ /**
+ * A helper method for safely using the value of an optional attribute that
+ * may be null if not present in the XML. Answers the integer value, or zero
+ * if null.
+ *
+ * @param i
+ * @return
+ */
+ public static int safeInt(Integer i)
+ {
+ return i == null ? 0 : i.intValue();
+ }
+
+ /**
+ * A helper method for safely using the value of an optional attribute that
+ * may be null if not present in the XML. Answers the float value, or zero if
+ * null.
+ *
+ * @param f
+ * @return
+ */
+ public static float safeFloat(Float f)
+ {
+ return f == null ? 0f : f.floatValue();
+ }
+
+ /**
* create/return unique hash string for sq
*
* @param sq
if (!addedToSplitFrames.contains(af))
{
Viewport view = candidate.getKey();
- Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(),
- view.getHeight());
+ Desktop.addInternalFrame(af, view.getTitle(),
+ safeInt(view.getWidth()), safeInt(view.getHeight()));
af.setMenusForViewport();
System.err.println("Failed to restore view " + view.getTitle()
+ " to split frame");
vi++;
}
- if (jseq.isViewreference() != null
- && jseq.isViewreference().booleanValue())
+ if (safeBoolean(jseq.isViewreference()))
+ // if (jseq.isViewreference() != null
+ // && jseq.isViewreference().booleanValue())
{
referenceseqForView = tmpseqs.get(tmpseqs.size() - 1);
}
Feature feat = features.get(f);
SequenceFeature sf = new SequenceFeature(feat.getType(),
feat.getDescription(), feat.getBegin(), feat.getEnd(),
- feat.getScore(), feat.getFeatureGroup());
+ safeFloat(feat.getScore()), feat.getFeatureGroup());
sf.setStatus(feat.getStatus());
/*
annotation.setId(null);
}
- // set visiblity for other annotation in this view
+ // set visibility for other annotation in this view
String annotationId = annotation.getId();
if (annotationId != null && annotationIds.containsKey(annotationId))
{
AlignmentAnnotation jda = annotationIds.get(annotationId);
// in principle Visible should always be true for annotation displayed
// in multiple views
- if (annotation.isVisible() != null) // annotation.hasVisible())
+ if (annotation.isVisible() != null)
{
jda.visible = annotation.isVisible();
}
continue;
}
- float value = annElement.getValue() == null ? 0f
- : annElement.getValue().floatValue();
+ float value = safeFloat(annElement.getValue());
anot[anpos] = new jalview.datamodel.Annotation(
annElement.getDisplayCharacter(),
annElement.getDescription(),
.getSecondaryStructure()
.charAt(0),
value);
- // JBPNote: Consider verifying dataflow for IO of secondary
- // structure annotation read from Stockholm files
- // this was added to try to ensure that
- // if (anot[ annElement.getPosition()].secondaryStructure>' ')
- // {
- // anot[ annElement.getPosition()].displayCharacter = "";
- // }
- final int colourValue = annElement.getColour() == null ? 0
- : annElement.getColour().intValue();
- anot[anpos].colour = new java.awt.Color(colourValue);
+ anot[anpos].colour = new Color(safeInt(annElement.getColour()));
if (firstColour == null)
{
firstColour = anot[anpos].colour;
// }
jaa = new jalview.datamodel.AlignmentAnnotation(
annotation.getLabel(), annotation.getDescription(), anot,
- llim, hlim, annotation.getGraphType());
+ llim, hlim, safeInt(annotation.getGraphType()));
- jaa.graphGroup = annotation.getGraphGroup();
+ jaa.graphGroup = safeInt(annotation.getGraphGroup());
jaa._linecolour = firstColour;
if (annotation.getThresholdLine() != null)
{
jaa.setThreshold(new jalview.datamodel.GraphLine(
- annotation.getThresholdLine().getValue(),
+ safeFloat(annotation.getThresholdLine().getValue()),
annotation.getThresholdLine().getLabel(),
- new java.awt.Color(
- annotation.getThresholdLine().getColour())));
-
+ new java.awt.Color(safeInt(
+ annotation.getThresholdLine().getColour()))));
}
if (autoForView || annotation.isAutoCalculated())
{
if (annotation.getScore() != null)
{
- jaa.setScore(annotation.getScore());
+ jaa.setScore(annotation.getScore().doubleValue());
}
if (annotation.isVisible() != null)
{
{
jaa.scaleColLabel = annotation.isScaleColLabels().booleanValue();
}
- if (/*annotation.hasAutoCalculated() && */annotation
- .isAutoCalculated())
+ if (annotation.isAutoCalculated())
{
// newer files have an 'autoCalculated' flag and store calculation
// state in viewport properties
{
jaa.graphHeight = annotation.getGraphHeight().intValue();
}
- // if (annotation.hasBelowAlignment())
- // {
- // schema specifies default for optional attribute
- jaa.belowAlignment = annotation.isBelowAlignment();
- // }
+ jaa.belowAlignment = annotation.isBelowAlignment();
jaa.setCalcId(annotation.getCalcId());
if (annotation.getProperty().size() > 0)
{
jGroup.getColour());
}
}
- int pidThreshold = jGroup.getPidThreshold() == null ? 0
- : jGroup.getPidThreshold().intValue();
+ int pidThreshold = safeInt(jGroup.getPidThreshold());
Vector<SequenceI> seqs = new Vector<>();
}
SequenceGroup sg = new SequenceGroup(seqs, jGroup.getName(), cs,
- jGroup.isDisplayBoxes(), jGroup.isDisplayText(),
- jGroup.isColourText(), jGroup.getStart(), jGroup.getEnd());
+ safeBoolean(jGroup.isDisplayBoxes()),
+ safeBoolean(jGroup.isDisplayText()),
+ safeBoolean(jGroup.isColourText()),
+ safeInt(jGroup.getStart()), safeInt(jGroup.getEnd()));
sg.getGroupColourScheme().setThreshold(pidThreshold, true);
sg.getGroupColourScheme()
- .setConservationInc(jGroup.getConsThreshold() == null ? 0
- : jGroup.getConsThreshold().intValue());
- sg.setOutlineColour(
- new java.awt.Color(jGroup.getOutlineColour() == null ? 0
- : jGroup.getOutlineColour().intValue()));
-
- sg.textColour = new java.awt.Color(jGroup.getTextCol1());
- sg.textColour2 = new java.awt.Color(jGroup.getTextCol2());
- sg.setShowNonconserved(
- jGroup.isShowUnconserved() != null
- ? jGroup.isShowUnconserved().booleanValue()
- : false);
- sg.thresholdTextColour = jGroup.getTextColThreshold();
+ .setConservationInc(safeInt(jGroup.getConsThreshold()));
+ sg.setOutlineColour(new Color(safeInt(jGroup.getOutlineColour())));
+
+ sg.textColour = new Color(safeInt(jGroup.getTextCol1()));
+ sg.textColour2 = new Color(safeInt(jGroup.getTextCol2()));
+ sg.setShowNonconserved(safeBoolean(jGroup.isShowUnconserved()));
+ sg.thresholdTextColour = safeInt(jGroup.getTextColThreshold());
// attributes with a default in the schema are never null
- // if (jGroup.hasShowConsensusHistogram())
- // {
sg.setShowConsensusHistogram(jGroup.isShowConsensusHistogram());
- // }
- // if (jGroup.hasShowSequenceLogo())
- // {
sg.setshowSequenceLogo(jGroup.isShowSequenceLogo());
- // }
- // if (jGroup.hasNormaliseSequenceLogo())
- // {
sg.setNormaliseSequenceLogo(jGroup.isNormaliseSequenceLogo());
- // }
- // if (jGroup.hasIgnoreGapsinConsensus())
- // {
sg.setIgnoreGapsConsensus(jGroup.isIgnoreGapsinConsensus());
- // }
if (jGroup.getConsThreshold() != null
&& jGroup.getConsThreshold().intValue() != 0)
{
* add the structure to the Varna display (with session state copied
* from the jar to a temporary file)
*/
- boolean gapped = ss.isGapped();
+ boolean gapped = safeBoolean(ss.isGapped());
String rnaTitle = ss.getTitle();
String sessionState = ss.getViewerState();
String tempStateFile = copyJarEntry(jprovider, sessionState,
RnaModel rna = new RnaModel(rnaTitle, ann, seq, null, gapped);
appVarna.addModelSession(rna, rnaTitle, tempStateFile);
}
- appVarna.setInitialSelection(viewer.getSelectedRna());
+ appVarna.setInitialSelection(safeInt(viewer.getSelectedRna()));
}
}
}
* viewer not found - make it
*/
RnaViewerModel model = new RnaViewerModel(postLoadId, viewer.getTitle(),
- viewer.getXpos(), viewer.getYpos(), viewer.getWidth(),
- viewer.getHeight(), viewer.getDividerLocation());
+ safeInt(viewer.getXpos()), safeInt(viewer.getYpos()),
+ safeInt(viewer.getWidth()), safeInt(viewer.getHeight()),
+ safeInt(viewer.getDividerLocation()));
AppVarna varna = new AppVarna(model, ap);
return varna;
TreePanel tp = (TreePanel) retrieveExistingObj(tree.getId());
if (tp == null)
{
- tp = af.showNewickTree(
- new jalview.io.NewickFile(tree.getNewick()),
- tree.getTitle(), tree.getWidth(), tree.getHeight(),
- tree.getXpos(), tree.getYpos());
+ tp = af.showNewickTree(new NewickFile(tree.getNewick()),
+ tree.getTitle(), safeInt(tree.getWidth()),
+ safeInt(tree.getHeight()), safeInt(tree.getXpos()),
+ safeInt(tree.getYpos()));
if (tree.getId() != null)
{
// perhaps bind the tree id to something ?
// TODO: should check if tp has been manipulated by user - if so its
// settings shouldn't be modified
tp.setTitle(tree.getTitle());
- tp.setBounds(new Rectangle(tree.getXpos(), tree.getYpos(),
- tree.getWidth(), tree.getHeight()));
- tp.setViewport(av); // af.viewport; // TODO: verify 'associate with all
- // views'
- // works still
+ tp.setBounds(new Rectangle(safeInt(tree.getXpos()),
+ safeInt(tree.getYpos()), safeInt(tree.getWidth()),
+ safeInt(tree.getHeight())));
+ tp.setViewport(av); // af.viewport;
+ // TODO: verify 'associate with all views' works still
tp.getTreeCanvas().setViewport(av); // af.viewport;
tp.getTreeCanvas().setAssociatedPanel(ap); // af.alignPanel;
continue;
}
- tp.fitToWindow.setState(tree.isFitToWindow());
+ tp.fitToWindow.setState(safeBoolean(tree.isFitToWindow()));
tp.fitToWindow_actionPerformed(null);
if (tree.getFontName() != null)
{
- tp.setTreeFont(new java.awt.Font(tree.getFontName(),
- tree.getFontStyle(), tree.getFontSize()));
+ tp.setTreeFont(
+ new Font(tree.getFontName(), safeInt(tree.getFontStyle()),
+ safeInt(tree.getFontSize())));
}
else
{
- tp.setTreeFont(new java.awt.Font(view.getFontName(),
- view.getFontStyle(), tree.getFontSize()));
+ tp.setTreeFont(
+ new Font(view.getFontName(), safeInt(view.getFontStyle()),
+ safeInt(view.getFontSize())));
}
- tp.showPlaceholders(tree.isMarkUnlinked());
- tp.showBootstrap(tree.isShowBootstrap());
- tp.showDistances(tree.isShowDistances());
+ tp.showPlaceholders(safeBoolean(tree.isMarkUnlinked()));
+ tp.showBootstrap(safeBoolean(tree.isShowBootstrap()));
+ tp.showDistances(safeBoolean(tree.isShowDistances()));
- tp.getTreeCanvas().setThreshold(tree.getThreshold());
+ tp.getTreeCanvas().setThreshold(safeFloat(tree.getThreshold()));
- if (tree.isCurrentTree())
+ if (safeBoolean(tree.isCurrentTree()))
{
af.getViewport().setCurrentTree(tp.getTree());
}
loadPDBFile(jprovider, pdbid.getId(), pdbid.getFile()));
jpdb.setId(pdbid.getId());
- int x = structureState.getXpos();
- int y = structureState.getYpos();
- int width = structureState.getWidth();
- int height = structureState.getHeight();
+ int x = safeInt(structureState.getXpos());
+ int y = safeInt(structureState.getYpos());
+ int width = safeInt(structureState.getWidth());
+ int height = safeInt(structureState.getHeight());
// Probably don't need to do this anymore...
// Desktop.desktop.getComponentAt(x, y);
String viewId, List<JvAnnotRow> autoAlan)
{
AlignFrame af = null;
- af = new AlignFrame(al, view.getWidth(), view.getHeight(),
- uniqueSeqSetId, viewId);
+ af = new AlignFrame(al, safeInt(view.getWidth()),
+ safeInt(view.getHeight()), uniqueSeqSetId, viewId);
af.setFileName(file, FileFormat.Jalview);
final AlignViewport viewport = af.getViewport();
for (int i = 0; i < JSEQ.size(); i++)
{
- viewport.setSequenceColour(
- viewport.getAlignment().getSequenceAt(i),
- new java.awt.Color(JSEQ.get(i).getColour()));
+ int colour = safeInt(JSEQ.get(i).getColour());
+ viewport.setSequenceColour(viewport.getAlignment().getSequenceAt(i),
+ new Color(colour));
}
if (al.hasSeqrep())
viewport.setDisplayReferenceSeq(true);
}
- viewport.setGatherViewsHere(view.isGatheredViews());
+ viewport.setGatherViewsHere(safeBoolean(view.isGatheredViews()));
if (view.getSequenceSetId() != null)
{
}
// recover view properties and display parameters
- viewport.setShowAnnotation(view.isShowAnnotation());
- viewport.setAbovePIDThreshold(view.isPidSelected());
- final int pidThreshold = view.getPidThreshold() == null ? 0
- : view.getPidThreshold().intValue();
+ viewport.setShowAnnotation(safeBoolean(view.isShowAnnotation()));
+ viewport.setAbovePIDThreshold(safeBoolean(view.isPidSelected()));
+ final int pidThreshold = safeInt(view.getPidThreshold());
viewport.setThreshold(pidThreshold);
- viewport.setColourText(view.isShowColourText());
+ viewport.setColourText(safeBoolean(view.isShowColourText()));
viewport
- .setConservationSelected(view.isConservationSelected());
- viewport.setIncrement(view.getConsThreshold() == null ? 0
- : view.getConsThreshold().intValue());
- viewport.setShowJVSuffix(view.isShowFullId());
- viewport.setRightAlignIds(view.isRightAlignIds());
- viewport.setFont(new java.awt.Font(view.getFontName(),
- view.getFontStyle(), view.getFontSize()), true);
+ .setConservationSelected(
+ safeBoolean(view.isConservationSelected()));
+ 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())),
+ true);
ViewStyleI vs = viewport.getViewStyle();
vs.setScaleProteinAsCdna(view.isScaleProteinAsCdna());
viewport.setViewStyle(vs);
// TODO: allow custom charWidth/Heights to be restored by updating them
// after setting font - which means set above to false
- viewport.setRenderGaps(view.isRenderGaps());
- viewport.setWrapAlignment(view.isWrapAlignment());
- viewport.setShowAnnotation(view.isShowAnnotation());
+ viewport.setRenderGaps(safeBoolean(view.isRenderGaps()));
+ viewport.setWrapAlignment(safeBoolean(view.isWrapAlignment()));
+ viewport.setShowAnnotation(safeBoolean(view.isShowAnnotation()));
- viewport.setShowBoxes(view.isShowBoxes());
+ viewport.setShowBoxes(safeBoolean(view.isShowBoxes()));
- viewport.setShowText(view.isShowText());
+ viewport.setShowText(safeBoolean(view.isShowText()));
- viewport.setTextColour(new java.awt.Color(view.getTextCol1()));
- viewport.setTextColour2(new java.awt.Color(view.getTextCol2()));
- viewport.setThresholdTextColour(view.getTextColThreshold());
- viewport.setShowUnconserved(
- view.isShowUnconserved() ? view.isShowUnconserved() : false);
- viewport.getRanges().setStartRes(view.getStartRes());
+ viewport.setTextColour(new Color(safeInt(view.getTextCol1())));
+ viewport.setTextColour2(new Color(safeInt(view.getTextCol2())));
+ viewport.setThresholdTextColour(safeInt(view.getTextColThreshold()));
+ viewport.setShowUnconserved(view.isShowUnconserved());
+ viewport.getRanges().setStartRes(safeInt(view.getStartRes()));
if (view.getViewName() != null)
{
viewport.setViewName(view.getViewName());
af.setInitialTabVisible();
}
- af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),
- view.getHeight());
+ af.setBounds(safeInt(view.getXpos()), safeInt(view.getYpos()),
+ safeInt(view.getWidth()), safeInt(view.getHeight()));
// startSeq set in af.alignPanel.updateLayout below
af.alignPanel.updateLayout();
ColourSchemeI cs = null;
.setConsensus(viewport.getSequenceConsensusHash());
viewport.setColourAppliesToAllGroups(false);
- if (view.isConservationSelected() && cs != null)
+ if (safeBoolean(view.isConservationSelected()) && cs != null)
{
viewport.getResidueShading()
- .setConservationInc(view.getConsThreshold());
+ .setConservationInc(safeInt(view.getConsThreshold()));
}
af.changeColour(cs);
viewport.setColourAppliesToAllGroups(true);
viewport
- .setShowSequenceFeatures(view.isShowSequenceFeatures());
+ .setShowSequenceFeatures(
+ safeBoolean(view.isShowSequenceFeatures()));
- // if (view.hasCentreColumnLabels())
- // {
viewport.setCentreColumnLabels(view.isCentreColumnLabels());
- // }
- // if (view.hasIgnoreGapsinConsensus())
- // {
viewport.setIgnoreGapsConsensus(view.isIgnoreGapsinConsensus(), null);
- // }
- // if (view.hasFollowHighlight())
- // {
-
viewport.setFollowHighlight(view.isFollowHighlight());
- // }
- // if (view.hasFollowSelection())
- // {
viewport.followSelection = view.isFollowSelection();
- // }
- // if (view.hasShowConsensusHistogram())
- // {
viewport.setShowConsensusHistogram(view.isShowConsensusHistogram());
- // }
- // else
- // {
- // viewport.setShowConsensusHistogram(true);
- // }
- // if (view.hasShowSequenceLogo())
- // {
viewport.setShowSequenceLogo(view.isShowSequenceLogo());
- // }
- // else
- // {
- // viewport.setShowSequenceLogo(false);
- // }
- // if (view.hasNormaliseSequenceLogo())
- // {
viewport.setNormaliseSequenceLogo(view.isNormaliseSequenceLogo());
- // }
- if (view.isShowDbRefTooltip() != null)
- {
- viewport.setShowDBRefs(view.isShowDbRefTooltip());
- }
- if (view.isShowNPfeatureTooltip() != null)
- {
- viewport.setShowNPFeats(view.isShowNPfeatureTooltip());
- }
- // if (view.hasShowGroupConsensus())
- // {
+ viewport.setShowDBRefs(safeBoolean(view.isShowDbRefTooltip()));
+ viewport.setShowNPFeats(safeBoolean(view.isShowNPfeatureTooltip()));
viewport.setShowGroupConsensus(view.isShowGroupConsensus());
- // }
- // else
- // {
- // viewport.setShowGroupConsensus(false);
- // }
- // if (view.hasShowGroupConservation())
- // {
viewport.setShowGroupConservation(view.isShowGroupConservation());
- // }
- // else
- // {
- // viewport.setShowGroupConservation(false);
- // }
// recover feature settings
if (jm.getFeatureSettings() != null)
{
noValueColour = maxColour;
}
- float min = setting.getMin() != null
- ? setting.getMin().floatValue()
- : 0f;
- float max = setting.getMin() != null
- ? setting.getMax().floatValue()
- : 1f;
+ float min = safeFloat(safeFloat(setting.getMin()));
+ float max = setting.getMax() == null ? 1f
+ : setting.getMax().floatValue();
FeatureColourI gc = new FeatureColour(minColour, maxColour,
noValueColour, min, max);
if (setting.getAttributeName().size() > 0)
if (setting.getThreshold() != null)
{
gc.setThreshold(setting.getThreshold().floatValue());
- int threshstate = setting.getThreshstate().intValue();
+ int threshstate = safeInt(setting.getThreshstate());
// -1 = None, 0 = Below, 1 = Above threshold
if (threshstate == 0)
{
featureOrder.put(featureType, new Float(
fs / jm.getFeatureSettings().getSetting().size()));
}
- if (setting.isDisplay())
+ if (safeBoolean(setting.isDisplay()))
{
fdi.setVisible(featureType);
}
{
for (int c = 0; c < view.getHiddenColumns().size(); c++)
{
- viewport.hideColumns(view.getHiddenColumns().get(c).getStart(),
- view.getHiddenColumns().get(c).getEnd() // +1
- );
+ final HiddenColumns hc = view.getHiddenColumns().get(c);
+ viewport.hideColumns(safeInt(hc.getStart()),
+ safeInt(hc.getEnd()) /* +1 */);
}
}
if (view.getCalcIdParam() != null)
String complementaryViewId = view.getComplementId();
if (complementaryViewId == null)
{
- Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(),
- view.getHeight());
+ Desktop.addInternalFrame(af, view.getTitle(),
+ safeInt(view.getWidth()), safeInt(view.getHeight()));
// recompute any autoannotation
af.alignPanel.updateAnnotation(false, true);
reorderAutoannotation(af, al, autoAlan);
}
if (matchedAnnotation.getThreshold() == null)
{
- matchedAnnotation.setThreshold(new GraphLine(
- viewAnnColour.getThreshold(), "Threshold", Color.black));
+ matchedAnnotation.setThreshold(
+ new GraphLine(safeFloat(viewAnnColour.getThreshold()),
+ "Threshold", Color.black));
}
AnnotationColourGradient cs = null;
if (viewAnnColour.getColourScheme().equals("None"))
{
cs = new AnnotationColourGradient(matchedAnnotation,
- new Color(viewAnnColour.getMinColour()),
- new Color(viewAnnColour.getMaxColour()),
- viewAnnColour.getAboveThreshold());
+ new Color(safeInt(viewAnnColour.getMinColour())),
+ new Color(safeInt(viewAnnColour.getMaxColour())),
+ safeInt(viewAnnColour.getAboveThreshold()));
}
else if (viewAnnColour.getColourScheme().startsWith("ucs"))
{
cs = new AnnotationColourGradient(matchedAnnotation,
getUserColourScheme(model, viewAnnColour.getColourScheme()),
- viewAnnColour.getAboveThreshold());
+ safeInt(viewAnnColour.getAboveThreshold()));
}
else
{
cs = new AnnotationColourGradient(matchedAnnotation,
ColourSchemeProperty.getColourScheme(al,
viewAnnColour.getColourScheme()),
- viewAnnColour.getAboveThreshold());
+ safeInt(viewAnnColour.getAboveThreshold()));
}
- boolean perSequenceOnly = viewAnnColour.isPerSequence();
- boolean useOriginalColours = viewAnnColour.isPredefinedColours();
+ boolean perSequenceOnly = safeBoolean(viewAnnColour.isPerSequence());
+ boolean useOriginalColours = safeBoolean(
+ viewAnnColour.isPredefinedColours());
cs.setSeqAssociated(perSequenceOnly);
cs.setPredefinedColours(useOriginalColours);
AnnotationColourGradient groupScheme = new AnnotationColourGradient(
matchedAnnotation, sg.getColourScheme(),
- viewAnnColour.getAboveThreshold());
+ safeInt(viewAnnColour.getAboveThreshold()));
sg.setColourScheme(groupScheme);
groupScheme.setSeqAssociated(perSequenceOnly);
groupScheme.setPredefinedColours(useOriginalColours);
}
colour = new FeatureColour(mincol, maxcol, noValueColour,
- colourModel.getMin(),
- colourModel.getMax());
+ safeFloat(colourModel.getMin()),
+ safeFloat(colourModel.getMax()));
final List<String> attributeName = colourModel.getAttributeName();
String[] attributes = attributeName
.toArray(new String[attributeName.size()]);