All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openscience.cdk.qsar.DescriptorValue Maven / Gradle / Ivy

/* Copyright (C) 2002-2007  The Chemistry Development Kit (CDK) project
 *
 * Contact: [email protected]
 *
 * 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 Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package org.openscience.cdk.qsar;

import java.io.Serializable;

import org.openscience.cdk.qsar.result.BooleanResult;
import org.openscience.cdk.qsar.result.DoubleArrayResult;
import org.openscience.cdk.qsar.result.DoubleResult;
import org.openscience.cdk.qsar.result.IDescriptorResult;
import org.openscience.cdk.qsar.result.IntegerArrayResult;
import org.openscience.cdk.qsar.result.IntegerResult;

/**
 * Class that is used to store descriptor values as IChemObject properties.
 *
 * @cdk.module standard
 * @cdk.githash
 */
public class DescriptorValue implements Serializable {

    private static final long       serialVersionUID = -5672896059814842972L;

    private DescriptorSpecification specification;
    private String[]                parameterNames;
    private Object[]                parameterSettings;
    private IDescriptorResult       value;
    private String[]                descriptorNames;
    private Exception               exception;

    /**
     * Construct a descriptor value object, representing the numeric values as well as parameters and provenance.
     *
     * This constructor should be used when there has been no error during the descriptor calculation
     *
     * @param specification The specification
     * @param parameterNames The parameter names for the descriptors
     * @param parameterSettings  The parameter settings
     * @param value  The actual values
     * @param descriptorNames The names of the values
     */
    public DescriptorValue(DescriptorSpecification specification, String[] parameterNames, Object[] parameterSettings,
            IDescriptorResult value, String[] descriptorNames) {
        this(specification, parameterNames, parameterSettings, value, descriptorNames, null);

    }

    /**
     * Construct a descriptor value object, representing the numeric values as well as parameters and provenance.
     *
     * This constructor should be used when there has been an error during the descriptor calculation
     *
     * @param specification The specification
     * @param parameterNames The parameter names for the descriptors
     * @param parameterSettings  The parameter settings
     * @param value  The actual values
     * @param descriptorNames The names of the values
     * @param exception The exception object that should have been caught if an error occurred during descriptor
     * calculation
     */
    public DescriptorValue(DescriptorSpecification specification, String[] parameterNames, Object[] parameterSettings,
            IDescriptorResult value, String[] descriptorNames, Exception exception) {
        this.specification = specification;
        this.parameterNames = parameterNames;
        this.parameterSettings = parameterSettings;
        this.value = value;
        this.descriptorNames = descriptorNames;
        this.exception = exception;
    }

    public DescriptorSpecification getSpecification() {
        return this.specification;
    }

    public Object[] getParameters() {
        return this.parameterSettings;
    }

    public String[] getParameterNames() {
        return this.parameterNames;
    }

    public IDescriptorResult getValue() {
        return this.value;
    }

    public Exception getException() {
        return exception;
    }

    /**
     * Returns an array of names for each descriptor value calculated.
     * 

* Many descriptors return multiple values. In general it is useful for the * descriptor to indicate the names for each value. When a descriptor creates * a DescriptorValue object, it should supply an array of names equal * in length to the number of descriptor calculated. *

* In many cases, these names can be as simple as X1, X2, ..., XN where X is a prefix * and 1, 2, ..., N are the indices. On the other hand it is also possible to return * other arbitrary names, which should be documented in the JavaDocs for the descriptor * (e.g., the CPSA descriptor). *

* Note that by default if a descriptor returns a single value (such as {@link org.openscience.cdk.qsar.descriptors.molecular.ALOGPDescriptor} * the return array will have a single element *

* In case a descriptor creates a DescriptorValue object with no names, this * method will generate a set of names based on the {@link DescriptorSpecification} object * supplied at instantiation. * * @return An array of descriptor names. */ public String[] getNames() { if (descriptorNames == null || descriptorNames.length == 0) { String title = specification.getImplementationTitle(); if (value instanceof BooleanResult || value instanceof DoubleResult || value instanceof IntegerResult) { descriptorNames = new String[1]; descriptorNames[0] = title; } else { int ndesc = 0; if (value instanceof DoubleArrayResult) { ndesc = value.length(); } else if (value instanceof IntegerArrayResult) { ndesc = value.length(); } descriptorNames = new String[ndesc]; for (int i = 1; i < ndesc + 1; i++) descriptorNames[i] = title + i; } } return descriptorNames; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy