package affectors; import main.Node; import main.Globals; /** Placeholder affector for use with creating dummy (i.e. nonused) parameters. * Ingeneue throws a fit if there are parameters that are not used. * Put this in a cytoplasmic node, else you're going to be calling this more times * than you need to. * *
Formula
*
dnodex/dt = 0
*
*
Parameters *
param | Dummy parameter |
Usage
*
*
* @author Kerry Kim
* @version
*/
public class PlaceHolderAff extends Affector {
int firstParameter;
/* And replace this comment with a description of the second parameter, if there is one.*/
/* These next few lines give short descriptions of the Affector, the nodes used by
the Affector, and the parameters used by the Affector. These descriptions are
used by Ingeneue's interface to guide users in constructing models with a point
and click interface - something that is currently not possible, but which we
hope will be available within a year. */
/* This first string is a several word description of what the Affector does. */
static final String affectorDescription = "For creating dummy parameters";
/* This list of strings describes, in one or a few words, the purpose of each node
used by the Affector. Note that it is important to put the correct number of
strings here, one per node, as the number of strings tells code which inputs
a network file how many nodes it should be expecting.
If the Affector uses no nodes, set nodeDescriptions = null. */
static final String [] nodeDescriptions = {};
/* This list of strings describes, in one or a few words, the purpose of each
parameter used by the Affector. As with the node descriptions, it is important
to get the right number of strings even if you don't put in the effort to make
good descriptions. If there are no parameters, set paramDescriptions = null. */
static final String [] paramDescriptions = {"Dummy parameter"};
/* This list of integers specifies whether each Node used by the Affector is in the
same cell as the Affectors Node, or is a neighboring cell. Put -1 for Nodes in
the same cell, 1 for Nodes in neighboring cells. The numbers here correspond to
the descriptions in nodeDescriptions above. */
static final int [] whichSides = {};
/** Constructor for this Affector. All Affectors must use a no-argument constructor, and
currently there is no need to do anything in the constructor of most Affectors.
You do need to change the name here from TemplateAff to [YourAffectorsName]Aff. */
public PlaceHolderAff() {}
/* Tells the rest of Ingeneue about this Affector. See the tutorial for the meaning
of each line. */
protected void setLabelsAndTypes() {
/* This function tells the rest of Ingeneue the descriptions of the Affector
and each node and parameter used by the Affector. If there are no Nodes
used by the Affector you can pass null in place of nodeDescriptions and
similarly for paramDescriptions if there are no parameters. */
setDescriptions(affectorDescription, nodeDescriptions, paramDescriptions);
/* This tells the rest of Ingeneue whether this Affector is supposed to
operate on Nodes that reside in the membrane. The default is that
an Affector operates only on cytoplasmic Nodes, or if it operates on
membrane Nodes then it only operates on the sum of the concentrations
across all faces of the cell. In either of these cases, you can just
delete this method call. Otherwise, you need to pass true as the first
argument (indicating that Affector operates on membrane Nodes) and the
sides of each Node as the second argument (see comment near whichSides above). */
setSided(true, whichSides);
/* This tells the rest of Ingeneue whether the Affector uses the concentration
of the Node whose value it is helping determine. For instance, a Decay
Affector calculates its value based on the concentration of the Node it
is decaying. On the other hand, a translation Affector produces the same
amount of protein regardless of the concentration of the protein. In the first
of these cases, you need to inform the rest of Ingeneue that the formula uses
the concentration of the target Node. In the latter, you must inform Ingeneue
that it doesn't. The default is to assume that the Affector doesn't use the
target Node's concentration, so in that case you can just delete this method
call. */
setContainsTarget(true);
/* These four flags tell the rest of Ingeneue some characteristics of
the Affector. ... and george, you have to remind me what they do. */
this.Type[GUI_CAPABLE] = 1;
this.Type[CERTIFICATION] = Affector.RETURNS_DERIV;
this.Type[MATHTYPE] = Affector.CC;
this.Type[TERMTYPE] = Affector.PRODUCTION;
}
/* This is where the rest of Ingeneue gives this Affector indices to each parameter
that it uses. You should make a line for each parameter in the same order as
they are described in paramDescriptions above, and then assign the values from param_nums
as shown in the example below. */
public void setParameterNumbers(int [] param_nums)
{
firstParameter = param_nums[0];
}
/* This is the formula for this Affector.*/
public float getValue(Node which_node) {
return 0;
}
}
&nodex &PlaceHolderAff Dummy
*
* &endnodex