<commit_before>/*
 * JeffreysPriorLikelihood.java
 *
 * Copyright (C) 2002-2006 <NAME> and <NAME>
 *
 * This file is part of BEAST.
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership and licensing.
 *
 * BEAST is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 *  BEAST is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with BEAST; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 */

package dr.inference.model;

import dr.xml.*;

import java.util.ArrayList;

/**
 * @author <NAME>
 * @version $Id: JeffreysPriorLikelihood.java,v 1.9 2005/07/27 22:09:21 rambaut Exp $
 */

public class JeffreysPriorLikelihood extends Likelihood.Abstract {

	public static final String JEFFREYS_PRIOR = "jeffreysPrior";
	public static final String DATA = "data";

	public JeffreysPriorLikelihood() {

		super(null);
	}

	/**
	 * Adds a statistic, this is the data for which the likelihood is calculated.
	 */
	public void addData(Statistic data) { dataList.add(data); }


	protected ArrayList<Statistic> dataList = new ArrayList<Statistic>();

	/**
	 * Overridden to always return false.
	 */
	protected boolean getLikelihoodKnown() {
		return false;
	}

	/**
     * Calculate the log likelihood of the current state.
     * @return the log likelihood.
     */
	public double calculateLogLikelihood() {

		double logL = 0.0;

        for (Statistic statistic : dataList) {
            for (int j = 0; j < statistic.getDimension(); j++) {
                logL += Math.log(1.0 / statistic.getStatisticValue(j));
            }
        }
        return logL;
	}


	/**
	 * Reads a distribution likelihood from a DOM Document element.
	 */
	public static XMLObjectParser PARSER = new AbstractXMLObjectParser() {

		public String getParserName() { return JEFFREYS_PRIOR; }

		public Object parseXMLObject(XMLObject xo) throws XMLParseException {

			JeffreysPriorLikelihood likelihood = new JeffreysPriorLikelihood();

            XMLObject cxo = xo;

            if (xo.hasChildNamed(DATA)) {
                cxo = (XMLObject)xo.getChild(DATA);
            }

			for (int i = 0; i < cxo.getChildCount(); i++) {
				if (cxo.getChild(i) instanceof Statistic) {
					likelihood.addData( (Statistic)cxo.getChild(i));
				}
			}

			return likelihood;
		}

		//************************************************************************
		// AbstractXMLObjectParser implementation
		//************************************************************************

		public XMLSyntaxRule[] getSyntaxRules() { return rules; }

		private XMLSyntaxRule[] rules = new XMLSyntaxRule[] {
            new XORRule(
                    new ElementRule(Statistic.class, 1, Integer.MAX_VALUE ),
                    new ElementRule(DATA, new XMLSyntaxRule[] {new ElementRule(Statistic.class,  1, Integer.MAX_VALUE )})
            )
		};

		public String getParserDescription() {
			return "Calculates the Jeffrey's prior for the given statistics.";
		}

		public Class getReturnType() { return JeffreysPriorLikelihood.class; }
	};
}

<commit_msg>Epsilonic improvment<commit_after>/*
 * JeffreysPriorLikelihood.java
 *
 * Copyright (C) 2002-2006 <NAME> and <NAME>
 *
 * This file is part of BEAST.
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership and licensing.
 *
 * BEAST is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 *  BEAST is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with BEAST; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 */

package dr.inference.model;

import dr.xml.*;

import java.util.ArrayList;

/**
 * @author <NAME>
 * @version $Id: JeffreysPriorLikelihood.java,v 1.9 2005/07/27 22:09:21 rambaut Exp $
 */

public class JeffreysPriorLikelihood extends Likelihood.Abstract {

	public static final String JEFFREYS_PRIOR = "jeffreysPrior";
	public static final String DATA = "data";

	public JeffreysPriorLikelihood() {

		super(null);
	}

	/**
	 * Adds a statistic, this is the data for which the likelihood is calculated.
	 */
	public void addData(Statistic data) { dataList.add(data); }


	protected ArrayList<Statistic> dataList = new ArrayList<Statistic>();

	/**
	 * Overridden to always return false.
	 */
	protected boolean getLikelihoodKnown() {
		return false;
	}

	/**
     * Calculate the log likelihood of the current state.
     * @return the log likelihood.
     */
	public double calculateLogLikelihood() {

		double logL = 0.0;

        for (Statistic statistic : dataList) {
            for (int j = 0; j < statistic.getDimension(); j++) {
                // replace v += log(1/x) with v -= log(x) , save a division
                logL -= Math.log(statistic.getStatisticValue(j));
            }
        }
        return logL;
	}


	/**
	 * Reads a distribution likelihood from a DOM Document element.
	 */
	public static XMLObjectParser PARSER = new AbstractXMLObjectParser() {

		public String getParserName() { return JEFFREYS_PRIOR; }

		public Object parseXMLObject(XMLObject xo) throws XMLParseException {

			JeffreysPriorLikelihood likelihood = new JeffreysPriorLikelihood();

            XMLObject cxo = xo;

            if (xo.hasChildNamed(DATA)) {
                cxo = (XMLObject)xo.getChild(DATA);
            }

			for (int i = 0; i < cxo.getChildCount(); i++) {
				if (cxo.getChild(i) instanceof Statistic) {
					likelihood.addData( (Statistic)cxo.getChild(i));
				}
			}

			return likelihood;
		}

		//************************************************************************
		// AbstractXMLObjectParser implementation
		//************************************************************************

		public XMLSyntaxRule[] getSyntaxRules() { return rules; }

		private final XMLSyntaxRule[] rules = {
            new XORRule(
                    new ElementRule(Statistic.class, 1, Integer.MAX_VALUE ),
                    new ElementRule(DATA, new XMLSyntaxRule[] {new ElementRule(Statistic.class,  1, Integer.MAX_VALUE )})
            )
		};

		public String getParserDescription() {
			return "Calculates the Jeffrey's prior for the given statistics.";
		}

		public Class getReturnType() { return JeffreysPriorLikelihood.class; }
	};
}


{'fraction_non_alphanumeric': 0.1291477350956905, 'fraction_numerical': 0.01197852127220157, 'mean_word_length': 3.215902495647127, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4621594', 'n_tokens_mistral': 2236, 'n_tokens_neox': 1982, 'n_words': 690}