gov.sandia.cognition.framework.lite.VectorBasedPerceptionModule Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cognitive-foundry Show documentation
Show all versions of cognitive-foundry Show documentation
A single jar with all the Cognitive Foundry components.
/*
* File: VectorBasedPerceptionModule.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Framework Lite
*
* Copyright June 25, 2007, Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000, there is a non-exclusive license for use of this work by
* or on behalf of the U.S. Government. Export of this program may require a
* license from the United States Government. See CopyrightHistory.txt for
* complete details.
*
*
*/
package gov.sandia.cognition.framework.lite;
import gov.sandia.cognition.framework.CognitiveModelInput;
import gov.sandia.cognition.framework.CognitiveModelState;
import gov.sandia.cognition.framework.CognitiveModule;
import gov.sandia.cognition.framework.CognitiveModuleSettings;
import gov.sandia.cognition.framework.CognitiveModuleState;
import gov.sandia.cognition.framework.Cogxel;
import gov.sandia.cognition.framework.CogxelFactory;
import gov.sandia.cognition.framework.CogxelState;
import gov.sandia.cognition.framework.SemanticIdentifier;
import java.io.Serializable;
/**
* Module that takes CognitiveModelInputs and turns them into a Vector
*
* @author Kevin R. Dixon
* @since 1.0
*
*/
public class VectorBasedPerceptionModule
implements CognitiveModule, Serializable
{
/** The name of the module. */
public static final String MODULE_NAME = "Vector-based Perception Module";
/**
* Factory for creating Cogxels for perception
*/
private CogxelFactory cogxelFactory;
/**
* Creates a new instance of VectorBasedPerceptionModule
* @param cogxelFactory
* Factory for creating Cogxels for perception
*/
public VectorBasedPerceptionModule(
CogxelFactory cogxelFactory )
{
this.setCogxelFactory( cogxelFactory );
}
/**
* {@inheritDoc}
*
* @param modelState {@inheritDoc}
* @return {@inheritDoc}
*/
public CognitiveModuleState initializeState(
CognitiveModelState modelState)
{
return null;
}
/**
* {@inheritDoc}
*
* @return {@inheritDoc}
*/
public String getName()
{
return VectorBasedPerceptionModule.MODULE_NAME;
}
/**
* Returns null because this module has no settings.
*
* @return Null because this module has no settings.
*/
public CognitiveModuleSettings getSettings()
{
return null;
}
/**
* {@inheritDoc}
*
* @param modelState {@inheritDoc}
* @param previousModuleState {@inheritDoc}
* @return {@inheritDoc}
*/
public CognitiveModuleState update(
CognitiveModelState modelState,
final CognitiveModuleState previousModuleState)
{
// Get the input from the state object.
CognitiveModelInput inputObject = modelState.getInput();
if ( inputObject == null )
{
// Error: Bad input object.
return null;
}
else if ( !(inputObject instanceof VectorBasedCognitiveModelInput) )
{
// Not the type of input that this perception module is expecting
// to receive.
throw new IllegalArgumentException( "Expecting VectorBasedCognitiveModelInput but received: " + inputObject.getClass() );
}
// Get our input object.
VectorBasedCognitiveModelInput input =
(VectorBasedCognitiveModelInput) inputObject;
// Get the CogxelState because we are going to be adding Cogxels to it.
CogxelState cogxels = modelState.getCogxels();
// Loop over the input and add all the Cogxels for the identifiers.
int numInputs = input.getNumInputs();
for (int i = 0; i < numInputs; i++)
{
// Get the identifier and its value.
SemanticIdentifier identifier = input.getIdentifier(i);
double value = input.getValues().getElement(i);
// Create a cogxel for it.
Cogxel cogxel =
cogxels.getOrCreateCogxel(identifier, this.getCogxelFactory());
if ( cogxel != null )
{
// Set the activation of the cogxel to the given value.
cogxel.setActivation(value);
}
// else - It should never be null, but if it is we'll just ignore
// it.
}
// We're done, but we don't have any state so just return null.
return null;
}
/**
* Getter for cogxelFactory
* @return
* Factory for creating Cogxels for perception
*/
public CogxelFactory getCogxelFactory()
{
return this.cogxelFactory;
}
/**
* Setter for cogxelFactory
* @param cogxelFactory
* Factory for creating Cogxels for perception
*/
public void setCogxelFactory(
CogxelFactory cogxelFactory)
{
this.cogxelFactory = cogxelFactory;
}
}