use of dr.evomodel.substmodel.AbstractPCARateMatrix in project beast-mcmc by beast-dev.
the class PCACodonModelParser method parseXMLObject.
public Object parseXMLObject(XMLObject xo) throws XMLParseException {
Codons codons = Codons.UNIVERSAL;
if (xo.hasAttribute(GeneticCode.GENETIC_CODE)) {
String codeStr = xo.getStringAttribute(GeneticCode.GENETIC_CODE);
if (codeStr.equals(GeneticCode.UNIVERSAL.getName())) {
codons = Codons.UNIVERSAL;
} else if (codeStr.equals(GeneticCode.VERTEBRATE_MT.getName())) {
codons = Codons.VERTEBRATE_MT;
} else if (codeStr.equals(GeneticCode.YEAST.getName())) {
codons = Codons.YEAST;
} else if (codeStr.equals(GeneticCode.MOLD_PROTOZOAN_MT.getName())) {
codons = Codons.MOLD_PROTOZOAN_MT;
} else if (codeStr.equals(GeneticCode.INVERTEBRATE_MT.getName())) {
codons = Codons.INVERTEBRATE_MT;
} else if (codeStr.equals(GeneticCode.CILIATE.getName())) {
codons = Codons.CILIATE;
} else if (codeStr.equals(GeneticCode.ECHINODERM_MT.getName())) {
codons = Codons.ECHINODERM_MT;
} else if (codeStr.equals(GeneticCode.EUPLOTID_NUC.getName())) {
codons = Codons.EUPLOTID_NUC;
} else if (codeStr.equals(GeneticCode.BACTERIAL.getName())) {
codons = Codons.BACTERIAL;
} else if (codeStr.equals(GeneticCode.ALT_YEAST.getName())) {
codons = Codons.ALT_YEAST;
} else if (codeStr.equals(GeneticCode.ASCIDIAN_MT.getName())) {
codons = Codons.ASCIDIAN_MT;
} else if (codeStr.equals(GeneticCode.FLATWORM_MT.getName())) {
codons = Codons.FLATWORM_MT;
} else if (codeStr.equals(GeneticCode.BLEPHARISMA_NUC.getName())) {
codons = Codons.BLEPHARISMA_NUC;
} else if (codeStr.equals(GeneticCode.NO_STOPS.getName())) {
codons = Codons.NO_STOPS;
}
}
// get number of PCs
Parameter pcaDimensionParameter = (Parameter) xo.getElementFirstChild(PCA_DIMENSION);
// get directory with pca rate matrix files; fallback to default "pcadata"
String dirString = "pcadata";
if (xo.hasAttribute(PCA_DATA_DIR)) {
dirString = xo.getStringAttribute(PCA_DATA_DIR);
}
// get type of rate matrix; fallback to mammalia pca
AbstractPCARateMatrix pcaType = new PCARateMatrixMammalia(pcaDimensionParameter.getDimension(), dirString);
// check for other type of pca
if (xo.hasAttribute(PCATYPE)) {
String pcaTypeString = xo.getStringAttribute(PCATYPE);
if (pcaTypeString.equals(PCARateMatrixMammalia.getName())) {
pcaType = new PCARateMatrixMammalia(pcaDimensionParameter.getDimension(), dirString);
}
}
// decide if getting frequencies from csv or estimating from MSA
FrequencyModel freqModel = null;
if (xo.getChild(FrequencyModel.class) != null) {
freqModel = (FrequencyModel) xo.getChild(FrequencyModel.class);
} else {
freqModel = createNewFreqModel(codons, pcaType);
}
return new PCACodonModel(codons, pcaType, pcaDimensionParameter, freqModel);
}
Aggregations