/** Lays out the appropriate components in the panel for this partition model. */ private void setupPanel() { switch (model.getDataType().getType()) { case DataType.NUCLEOTIDES: addComponentWithLabel("Substitution Model:", nucSubstCombo); addComponentWithLabel("Base frequencies:", frequencyCombo); addComponentWithLabel("Site Heterogeneity Model:", heteroCombo); heteroCombo.setSelectedIndex(0); gammaCatLabel = addComponentWithLabel("Number of Gamma Categories:", gammaCatCombo); gammaCatCombo.setEnabled(false); addSeparator(); addComponentWithLabel("Partition into codon positions:", codingCombo); JPanel panel2 = new JPanel(); panel2.setOpaque(false); panel2.setLayout(new BoxLayout(panel2, BoxLayout.PAGE_AXIS)); panel2.setBorder(BorderFactory.createTitledBorder("Link/Unlink parameters:")); panel2.add(substUnlinkCheck); panel2.add(heteroUnlinkCheck); panel2.add(freqsUnlinkCheck); addComponent(panel2); addComponent(setYang96Button); addComponent(setSRD06Button); break; case DataType.AMINO_ACIDS: addComponentWithLabel("Substitution Model:", aaSubstCombo); addComponentWithLabel("Citation:", citationText); addComponentWithLabel("Site Heterogeneity Model:", heteroCombo); heteroCombo.setSelectedIndex(0); gammaCatLabel = addComponentWithLabel("Number of Gamma Categories:", gammaCatCombo); gammaCatCombo.setEnabled(false); break; case DataType.TWO_STATES: case DataType.COVARION: addComponentWithLabel("Substitution Model:", binarySubstCombo); addComponentWithLabel("Base frequencies:", frequencyCombo); addComponentWithLabel("Site Heterogeneity Model:", heteroCombo); heteroCombo.setSelectedIndex(0); gammaCatLabel = addComponentWithLabel("Number of Gamma Categories:", gammaCatCombo); gammaCatCombo.setEnabled(false); addSeparator(); addComponentWithLabel("", useAmbiguitiesTreeLikelihoodCheck); // Easy XML specification is currently only available for binary models if (ENABLE_STOCHASTIC_DOLLO) { addSeparator(); addComponent(dolloCheck); } break; case DataType.GENERAL: addComponentWithLabel("Discrete Trait Substitution Model:", discreteTraitSiteModelCombo); addComponent(activateBSSVS); break; case DataType.CONTINUOUS: addComponentWithLabel("Continuous Trait Model:", continuousTraitSiteModelCombo); addComponent(latLongCheck); addSeparator(); addComponent(useLambdaCheck); break; case DataType.MICRO_SAT: addComponentWithLabel("Microsatellite Name:", microsatName); addComponentWithLabel("Max of Length:", microsatMax); addComponentWithLabel("Min of Length:", microsatMin); addComponent(shareMicroSatCheck); addSeparator(); addComponentWithLabel("Rate Proportionality:", rateProportionCombo); addComponentWithLabel("Mutational Bias:", mutationBiasCombo); addComponentWithLabel("Phase:", phaseCombo); break; default: throw new IllegalArgumentException("Unknown data type"); } setOptions(); }
/** * Sets the components up according to the partition model - but does not layout the top level * options panel. */ public void setOptions() { if (SiteModelsPanel.DEBUG) { String modelName = (model == null) ? "null" : model.getName(); Logger.getLogger("dr.app.beauti").info("ModelsPanel.setModelOptions(" + modelName + ")"); } if (model == null) { return; } int dataType = model.getDataType().getType(); switch (dataType) { case DataType.NUCLEOTIDES: nucSubstCombo.setSelectedItem(model.getNucSubstitutionModel()); frequencyCombo.setSelectedItem(model.getFrequencyPolicy()); break; case DataType.AMINO_ACIDS: aaSubstCombo.setSelectedItem(model.getAaSubstitutionModel()); break; case DataType.TWO_STATES: case DataType.COVARION: binarySubstCombo.setSelectedItem(model.getBinarySubstitutionModel()); useAmbiguitiesTreeLikelihoodCheck.setSelected(model.isUseAmbiguitiesTreeLikelihood()); break; case DataType.GENERAL: discreteTraitSiteModelCombo.setSelectedItem(model.getDiscreteSubstType()); activateBSSVS.setSelected(model.isActivateBSSVS()); break; case DataType.CONTINUOUS: continuousTraitSiteModelCombo.setSelectedItem(model.getContinuousSubstModelType()); ContinuousComponentOptions component = (ContinuousComponentOptions) model.getOptions().getComponentOptions(ContinuousComponentOptions.class); latLongCheck.setSelected(model.isLatitudeLongitude()); latLongCheck.setEnabled(model.getContinuousTraitCount() == 2); useLambdaCheck.setSelected(component.useLambda(model)); break; case DataType.MICRO_SAT: microsatName.setText(model.getMicrosatellite().getName()); microsatMax.setText(Integer.toString(model.getMicrosatellite().getMax())); microsatMin.setText(Integer.toString(model.getMicrosatellite().getMin())); shareMicroSatCheck.setSelected(model.getOptions().shareMicroSat); rateProportionCombo.setSelectedItem(model.getRatePorportion()); mutationBiasCombo.setSelectedItem(model.getMutationBias()); phaseCombo.setSelectedItem(model.getPhase()); shareMicroSatCheck.setEnabled( model.getOptions().getPartitionSubstitutionModels(Microsatellite.INSTANCE).size() > 1); break; default: throw new IllegalArgumentException("Unknown data type"); } if (model.isGammaHetero() && !model.isInvarHetero()) { heteroCombo.setSelectedIndex(1); } else if (!model.isGammaHetero() && model.isInvarHetero()) { heteroCombo.setSelectedIndex(2); } else if (model.isGammaHetero() && model.isInvarHetero()) { heteroCombo.setSelectedIndex(3); } else { heteroCombo.setSelectedIndex(0); } gammaCatCombo.setSelectedIndex(model.getGammaCategories() - 4); if (model.getCodonHeteroPattern() == null) { codingCombo.setSelectedIndex(0); } else if (model.getCodonHeteroPattern().equals("112")) { codingCombo.setSelectedIndex(1); } else { codingCombo.setSelectedIndex(2); } substUnlinkCheck.setSelected(model.isUnlinkedSubstitutionModel()); heteroUnlinkCheck.setSelected(model.isUnlinkedHeterogeneityModel()); freqsUnlinkCheck.setSelected(model.isUnlinkedFrequencyModel()); dolloCheck.setSelected(model.isDolloModel()); }