package owltools.sim2.io; import java.io.PrintStream; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Set; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLClassExpression; import org.semanticweb.owlapi.model.OWLNamedIndividual; import owltools.graph.OWLGraphWrapper; import owltools.io.OWLPrettyPrinter; import owltools.sim2.OwlSim.ScoreAttributeSetPair; import owltools.sim2.scores.AttributePairScores; import owltools.sim2.scores.ElementPairScores; public class FormattedRenderer extends AbstractRenderer implements SimResultRenderer { private static NumberFormat doubleRenderer = new DecimalFormat("#.##########"); boolean isHeaderLine = true; public FormattedRenderer(PrintStream resultOutStream, OWLPrettyPrinter owlpp) { this.resultOutStream = resultOutStream; this.owlpp = owlpp; } public FormattedRenderer(OWLPrettyPrinter owlpp) { this.resultOutStream = System.out; this.owlpp = owlpp; } public FormattedRenderer(OWLGraphWrapper g) { this.resultOutStream = System.out; this.owlpp = new OWLPrettyPrinter(g); } public FormattedRenderer(OWLGraphWrapper g, PrintStream resultOutStream) { this.resultOutStream = resultOutStream; this.owlpp = new OWLPrettyPrinter(g); } @Override public void printAttributeSim(AttributesSimScores simScores, OWLGraphWrapper graph, OWLPrettyPrinter owlpp) { // TODO Auto-generated method stub } /* (non-Javadoc) * @see owltools.sim.io.SimResultRenderer#printPairScores(owltools.sim2.scores.PairScores, owltools.io.OWLPrettyPrinter, owltools.graph.OWLGraphWrapper) */ @Override public void printPairScores(ElementPairScores ijscores) { resultOutStream.println("\n## PAIR:"); resultOutStream.println(" * I="+render(ijscores.getA())); resultOutStream.println(" * J="+render(ijscores.getB())); resultOutStream.println("### Summary"); resultOutStream.println(" * DirectAtts(i) = "+ijscores.getNumberOfAttributesForI()); resultOutStream.println(" * DirectAtts(j) = "+ijscores.getNumberOfAttributesForJ()); resultOutStream.println("### Direct Attributes"); resultOutStream.println(" * Atts(i)"); for (OWLClass c : ijscores.cs) { resultOutStream.println(" * "+render(c)); } resultOutStream.println(" * Atts(j)"); for (OWLClass d : ijscores.ds) { resultOutStream.println(" * "+render(d)); } resultOutStream.println("### SimJ"); resultOutStream.println(" * SimJ(i,j) = "+ijscores.simjScore); resultOutStream.println(" * Asymmetric SimJ(i < j) = "+ijscores.asymmetricSimjScore); resultOutStream.println(" * Asymmetric SimJ(i > j) = "+ijscores.inverseAsymmetricSimjScore); resultOutStream.println("### IC"); resultOutStream.println(" * MaxIC(i,j) = "+ijscores.maxIC); resultOutStream.println(" * MaxIC(i,j)[term] = "+render(ijscores.maxICwitness)); resultOutStream.println(" * AvgIC(i,j) = "+ijscores.avgIC); resultOutStream.println(" * SimGIC(i,j) = "+ijscores.simGIC); resultOutStream.println(" * Asymmetric SimGIC(i < j) = "+ijscores.asymmetricSimGIC); resultOutStream.println(" * Asymmetric SimGIC(i > j) = "+ijscores.inverseAsymmetricSimGIC); resultOutStream.println(" * MaxIC(i,j)[term] = "+ijscores.maxICwitness); resultOutStream.println(" * Asymmetric SimJ(i < j) = "+ijscores.asymmetricSimjScore); resultOutStream.println(" * Asymmetric SimJ(i > j) = "+ijscores.inverseAsymmetricSimjScore); resultOutStream.println("### Matrix"); resultOutStream.println(" * Attributes(i), Best matches in j"); for (int n=0; n<ijscores.cs.size(); n++) { OWLClass c = ijscores.cs.get(n); resultOutStream.println(" * "+render(c)+" "+render(ijscores.iclcsMatrix.bestForC[n])); } resultOutStream.println(" * Attributes(j), Best matches in i"); for (int n=0; n<ijscores.ds.size(); n++) { OWLClass d = ijscores.ds.get(n); resultOutStream.println(" * "+render(d)+" "+render(ijscores.iclcsMatrix.bestForD[n])); } } // NEW /* (non-Javadoc) * @see owltools.sim.io.SimResultRenderer#printPairScores(owltools.sim2.scores.AttributePairScores, owltools.io.OWLPrettyPrinter, owltools.graph.OWLGraphWrapper) */ @Override public void printPairScores(AttributePairScores scores) { resultOutStream.println("\n## PAIR:"); resultOutStream.println(" * C="+render(scores.getA())); resultOutStream.println(" * D="+render(scores.getB())); resultOutStream.println("### Rank"); resultOutStream.println(" * is D best match for C? "+scores.isBestMatchForI); resultOutStream.println("### SimJ"); resultOutStream.println(" * SimJ(c,d) = "+scores.simjScore); resultOutStream.println(" * Asymmetric SimJ(c < d) = "+scores.asymmetricSimjScore); resultOutStream.println(" * Asymmetric SimJ(d > c) = "+scores.inverseAsymmetricSimjScore); resultOutStream.println("### SimGIC"); resultOutStream.println(" * SimGIC(c,d) = "+scores.simGIC); //resultOutStream.println(" * Asymmetric SimJ(c < d) = "+scores.asymmetricSimjScore); //resultOutStream.println(" * Asymmetric SimJ(d > c) = "+scores.inverseAsymmetricSimjScore); resultOutStream.println("### LCS"); resultOutStream.println(" * LCS(c,d).IC = "+scores.lcsIC); resultOutStream.println(" * LCS(c,d).term = "+render(scores.lcsSet)); } private String render(ScoreAttributeSetPair sap) { return sap.score + " "+render(sap.attributeClassSet); } protected CharSequence render(Set<OWLClass> cset) { StringBuffer sb = new StringBuffer(); if (cset == null) return ""; for (OWLClassExpression c : cset) { sb.append(owlpp.render(c)).append("; "); } return sb; } protected CharSequence render(OWLClass c) { return owlpp.render(c); } protected CharSequence render(OWLNamedIndividual c) { return owlpp.render(c); } @Override public void printComment(CharSequence comment) { // TODO Auto-generated method stub } @Override public void printAttributeSim(AttributesSimScores simScores, OWLGraphWrapper graph) { // TODO Auto-generated method stub } @Override public void printAttributeSimWithIndividuals(AttributesSimScores simScores, OWLPrettyPrinter owlpp, OWLGraphWrapper g, OWLNamedIndividual i, OWLNamedIndividual j) { // TODO Auto-generated method stub } @Override public void printIndividualPairSim(IndividualSimScores scores, OWLPrettyPrinter owlpp, OWLGraphWrapper graph) { // TODO Auto-generated method stub } }