org.grouplens.lenskit.eval.EvalProject Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lenskit-eval Show documentation
Show all versions of lenskit-eval Show documentation
Facilities for evaluating recommender algorithms.
/*
* LensKit, an open source recommender systems toolkit.
* Copyright 2010-2014 LensKit Contributors. See CONTRIBUTORS.md.
* Work on LensKit has been funded by the National Science Foundation under
* grants IIS 05-34939, 08-08692, 08-12148, and 10-17697.
*
* This program 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.1 of the
* License, or (at your option) any later version.
*
* This program 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 General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.grouplens.lenskit.eval;
import com.google.common.collect.Iterables;
import com.google.common.eventbus.EventBus;
import org.apache.tools.ant.*;
import org.grouplens.grapht.util.ClassLoaders;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Nullable;
import java.util.*;
/**
* An eval "project", the eval script equivalent of an Ant project. This is used and configured
* by an {@link org.grouplens.lenskit.eval.script.EvalScript} and provides access to options, targets, etc.
*
* @since 1.3
* @author GroupLens Research
*/
public class EvalProject {
private static final Logger logger = LoggerFactory.getLogger(EvalProject.class);
private Project antProject;
private Random random = new Random();
private String defaultTarget;
private final EventBus eventBus;
private final ClassLoader classLoader;
/**
* Construct a new eval project.
* @param props A set of additional properties. These properties will be available in the
* project, in addition to the system properties. This is not where properties
* from the command line should be supplied; those should be set with
* {@link #setUserProperty(String, String)} so that they have Ant-like behavior.
*/
public EvalProject(@Nullable Properties props) {
this(props, ClassLoaders.inferDefault(EvalProject.class));
}
/**
* Construct a new eval project.
* @param props A set of additional properties. These properties will be available in the
* project, in addition to the system properties. This is not where properties
* from the command line should be supplied; those should be set with
* {@link #setUserProperty(String, String)} so that they have Ant-like behavior.
* @param loader A class loader. This class loader will be used by the project for custom class
* loading, such as reading cached objects from disk. If null, the default classloader
* will be used.
*/
public EvalProject(@Nullable Properties props, ClassLoader loader) {
antProject = new Project();
antProject.init();
antProject.addBuildListener(new Listener());
if (props != null) {
PropertyHelper ph = PropertyHelper.getPropertyHelper(antProject);
for (Map.Entry
© 2015 - 2024 Weber Informatics LLC | Privacy Policy