Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There are four steps required to add an Analysis to the Analysis Framework. Before these steps, you need to have a working MAEviz development environment. Also, if the new analysis uses any new data schemas, you must define them following the steps of Creating new Dataset schemas. When following these steps, it will be helpful to refer to the example of the standard Bridge Damage analysis in the ncsa.maeviz.bridges plugin. For each step, follow the link to the section below for the low-level details.

Step One: Create the #Analysis Description

First, one must create a new Analysis Description file for the Analysis. This will require knowledge of the parameters, outputs, and runtime requirements of the Analysis to be implemented. Generally, this file is placed in a folder called descriptions which sits in the root of the defining plugin, and is named to match the analysis name, such as BridgeDamage.xml. See the #Analysis Description section for detail of how to write this file, and the syntax used within.

Step Two: Create the #Task

Second, one must implement the Analysis as a Task. Pick the appropriate base class and implement the required methods. Remember that the keys given to the parameters in the Analysis Description must match the set methods in this class. Also, the column names given to the outputs must match the values given in the schema for the specific dataset type. The #Task section below gives details of how to extend the base class, and what java methods you must define.

Step Three: Register with the #ncsa.analysis.newAnalyses extension point

...

The Analysis Description file provides detailed information about the various sections of an Analysis. It is defined by using the following tags:

<analysis-description>

Attributes

...

This element has no text.

Example

Code Block

<analysis-type type="simpleIteration">
    <property name="iteratingDatasetKey" value="bridgeDamage" />
</analysis-type>

...

Defines a location for a custom OgreScript to use instead of auto-generating one. The format for this script will be defined on a separate page. This location is relative to the bundle in which the analysis is shipped.

Example

Code Block

<custom-script>scripts/ogrescript-bridgeFunc.xml</custom-script>

...

A parameter element with key <outputKey>.resultName is required. This is the only way to change a resultName for a given output.

Code Block

<parameter key="mappingResult.resultName"  phylum="string" cardinality="single" friendly-name="Result Name" />

...

<output friendly-name="Mapping Result" key="mappingResult" phylum="dataset">
...

...

NAME

DEFAULT VALUE

DESCRIPTION

group

(unused)

a string which must match a member of <groups> above --currently unused

format

shapefile

the format of whatever phylum of parameter this is.  For datasets, indicates what type of dataset (mapping, shapefile,etc)

phylum

(required)

the type of the parameter, currently supports string, dataset, or boolean

cardinality

(required)

how many of this type, currently supports single or multiple

key

(required)

name of property for which value should be added

friendly-name

{required)

name of property for which value should be added

optional

false

A value of true denotes that this parameter need not have a value

advanced

false

A value of true denotes that this is an advanced parameter

...

NAME

REQUIRED

CARDINALITY

DESCRIPTION

<types>

(optional)

0-many

A list of types that are accepted by this <parameter>.

<description>

(optional)

1

A textual description of the parameter.  Mostly used to generate tooltips in the UI.

Text

This element has no text.

Example

Code Block

<parameter group="Required" format="dataset" cardinality="single" key="functionalityTable" friendly-name="Functionality Table">
    <types>
        <type>bridgeFunctionality</type>
    </types>
</parameter>

...

This element has no text.

Example

Code Block

<output friendly-name="Bridge Functionality" key="bridgeFunctionality" format="dataset">
    <property name="base-dataset-key" value="bridgeDamage" />
    <property name="schema" value="ncsa.maeviz.schemas.bridgeFunctionalityResults.v1.0" />
</output>

...

There are two required abstract methods.

Code Block

protected abstract void preProcess() throws ScriptExecutionException;
protected abstract void handleFeature( IProgressMonitor monitor ) throws ScriptExecutionException;

...

For each <parameter> there must be a corresponding set method which corresponds to the key attribute in the <parameter>.

Example:

Code Block

<parameter group="Required" format="dataset" cardinality="single" key="functionalityTable" friendly-name="Functionality Table" />

public void setFunctionalityTable( Dataset d );

The handleFeature method is responsible for two things. First is computing the values that are to be added to the new Feature. Second is to populate the resultMap.

Example:

Code Block

resultMap.put( COL_LS_SLIGHT, dmg[0] );
resultMap.put( COL_LS_MODERATE, dmg[1] );

...