package de.lmu.ifi.dbs.elki.datasource.parser; /* This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures Copyright (C) 2011 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import java.util.BitSet; import java.util.List; import java.util.regex.Pattern; import de.lmu.ifi.dbs.elki.data.FloatVector; import de.lmu.ifi.dbs.elki.data.type.VectorFieldTypeInformation; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.utilities.Util; /** *

* Provides a parser for parsing one point per line, attributes separated by * whitespace. *

*

* Numerical values in a line will be parsed as double values but used in float * precision only. *

*

* Several labels may be given per point. A label must not be parseable as * double. Lines starting with "#" will be ignored. *

*

*

* An index can be specified to identify an entry to be treated as class label. * This index counts all entries (numeric and labels as well) starting with 0. *

* * @author Arthur Zimek * * @apiviz.has FloatVector */ public class FloatVectorLabelParser extends NumberVectorLabelParser { /** * Class logger */ private static final Logging logger = Logging.getLogger(FloatVectorLabelParser.class); /** * Constructor. * * @param colSep * @param quoteChar * @param labelIndices */ public FloatVectorLabelParser(Pattern colSep, char quoteChar, BitSet labelIndices) { super(colSep, quoteChar, labelIndices); } /** * Creates a FloatVector out of the given attribute values. * * @see de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser#createDBObject(java.util.List) */ @Override public FloatVector createDBObject(List attributes) { return new FloatVector(Util.convertToFloat(attributes)); } @Override protected VectorFieldTypeInformation getTypeInformation(int dimensionality) { return new VectorFieldTypeInformation(FloatVector.class, dimensionality, new FloatVector(new float[dimensionality])); } @Override protected Logging getLogger() { return logger; } /** * Parameterization class. * * @author Erich Schubert * * @apiviz.exclude */ public static class Parameterizer extends NumberVectorLabelParser.Parameterizer { @Override protected FloatVectorLabelParser makeInstance() { return new FloatVectorLabelParser(colSep, quoteChar, labelIndices); } } }