blob: 19db2ea65ab268302317e59875aec22db7e1dd12 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.samoa.instances;
/**
* Class for storing the header or context of a data stream. It allows to know
* the number of attributes and classes.
*/
public class InstancesHeader extends Instances {
private static final long serialVersionUID = 1L;
public InstancesHeader(Instances i) {
super(i, 0);
}
public InstancesHeader() {
super();
}
public static String getClassNameString(InstancesHeader context) {
if (context == null) {
return "[class]";
}
return "[class:" + context.classAttribute().name() + "]";
}
public static String getClassLabelString(InstancesHeader context,
int classLabelIndex) {
if ((context == null) || (classLabelIndex >= context.numClasses())) {
return "<class " + (classLabelIndex + 1) + ">";
}
return "<class " + (classLabelIndex + 1) + ":"
+ context.classAttribute().value(classLabelIndex) + ">";
}
// is impervious to class index changes - attIndex is true attribute index
// regardless of class position
public static String getAttributeNameString(InstancesHeader context,
int attIndex) {
if ((context == null) || (attIndex >= context.numAttributes())) {
return "[att " + (attIndex + 1) + "]";
}
int instAttIndex = attIndex < context.classIndex() ? attIndex
: attIndex + 1;
return "[att " + (attIndex + 1) + ":"
+ context.attribute(instAttIndex).name() + "]";
}
public static String getInputAttributeNameString(InstancesHeader context,
int attIndex) {
if ((context == null) || (attIndex >= context.numInputAttributes())) {
return "[att " + (attIndex + 1) + "]";
}
int instAttIndex = attIndex;
return "[att " + (attIndex + 1) + ":"
+ context.inputAttribute(instAttIndex).name() + "]";
}
// is impervious to class index changes - attIndex is true attribute index
// regardless of class position
public static String getNominalValueString(InstancesHeader context,
int attIndex, int valIndex) {
if (context != null) {
int instAttIndex = attIndex < context.classIndex() ? attIndex
: attIndex + 1;
if ((instAttIndex < context.numAttributes())
&& (valIndex < context.attribute(instAttIndex).numValues())) {
return "{val " + (valIndex + 1) + ":"
+ context.attribute(instAttIndex).value(valIndex) + "}";
}
}
return "{val " + (valIndex + 1) + "}";
}
// is impervious to class index changes - attIndex is true attribute index
// regardless of class position
public static String getNumericValueString(InstancesHeader context,
int attIndex, double value) {
if (context != null) {
int instAttIndex = attIndex < context.classIndex() ? attIndex
: attIndex + 1;
if (instAttIndex < context.numAttributes()) {
if (context.attribute(instAttIndex).isDate()) {
return context.attribute(instAttIndex).formatDate(value);
}
}
}
return Double.toString(value);
}
public Attribute inputAttribute(int w) {
return this.instanceInformation.inputAttribute(w);
}
public Attribute outputAttribute(int w) {
return this.instanceInformation.outputAttribute(w);
}
public int numInputAttributes() {
return this.instanceInformation.numInputAttributes();
}
public int numOutputAttributes() {
return this.instanceInformation.numOutputAttributes();
}
public InstanceInformation getInstanceInformation() {
return this.instanceInformation;
}
}