[kepler-code] r28816 - in trunk/modules: science-pipes/workflows/dev science-pipes-backend/src/edu/cornell/birds/is/bap/actor/survivorship science-pipes-frontend/WebContent/editor/parts
barseghian at ecoinformatics.org
barseghian at ecoinformatics.org
Tue Oct 18 18:05:05 PDT 2011
Author: barseghian
Date: 2011-10-18 18:05:05 -0700 (Tue, 18 Oct 2011)
New Revision: 28816
Added:
trunk/modules/science-pipes-backend/src/edu/cornell/birds/is/bap/actor/survivorship/AgePyramidPlot.java
trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot.meta.xml
Modified:
trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.SurvivorshipDataActor.meta.xml
trunk/modules/science-pipes-frontend/WebContent/editor/parts/survivorship-actors.xml
trunk/modules/science-pipes/workflows/dev/survivorship_actors_test.xml
Log:
age pyramid plot actor
Modified: trunk/modules/science-pipes/workflows/dev/survivorship_actors_test.xml
===================================================================
--- trunk/modules/science-pipes/workflows/dev/survivorship_actors_test.xml 2011-10-19 00:58:13 UTC (rev 28815)
+++ trunk/modules/science-pipes/workflows/dev/survivorship_actors_test.xml 2011-10-19 01:05:05 UTC (rev 28816)
@@ -10,13 +10,13 @@
<property name="_location" class="ptolemy.kernel.util.Location" value="[-50.0, -15.0]">
</property>
</property>
- <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={257, 22, 883, 806}, maximized=false}">
+ <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={257, 22, 883, 821}, maximized=false}">
</property>
- <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 681]">
+ <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 696]">
</property>
<property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="0.8">
</property>
- <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{300.0, 340.5}">
+ <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{300.0, 349.875}">
</property>
<entity name="Display" class="ptolemy.actor.lib.gui.Display">
<property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={65, 305, 1189, 542}, maximized=false}">
@@ -27,7 +27,7 @@
</property>
</entity>
<entity name="Display2" class="ptolemy.actor.lib.gui.Display">
- <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={69, 238, 1189, 542}, maximized=false}">
+ <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={162, 161, 1189, 542}, maximized=false}">
</property>
<property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[1189, 498]">
</property>
@@ -55,9 +55,9 @@
</property>
</entity>
<entity name="SurvivorshipDataActor" class="edu.cornell.birds.is.bap.actor.survivorship.SurvivorshipDataActor">
- <property name="cemeterySearchText" class="edu.cornell.birds.is.bap.ptolemy.StringChoiceParameter" value="Forty Fort Cemetery">
+ <property name="cemeterySearchText" class="edu.cornell.birds.is.bap.ptolemy.StringChoiceParameter" value="Hollenback Cemetery">
<display name="Cemetery Search Text"/> </property>
- <property name="_location" class="ptolemy.kernel.util.Location" value="[15.0, 365.0]">
+ <property name="_location" class="ptolemy.kernel.util.Location" value="[-5.0, 365.0]">
</property>
</entity>
<entity name="ImageDisplay" class="ptolemy.actor.lib.image.ImageDisplay">
@@ -77,7 +77,7 @@
</property>
</entity>
<entity name="ImageDisplay2" class="ptolemy.actor.lib.image.ImageDisplay">
- <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={655, 236, 700, 544}, maximized=false}">
+ <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={645, 249, 700, 544}, maximized=false}">
</property>
<property name="_pictureSize" class="ptolemy.actor.gui.SizeAttribute" value="[700, 500]">
</property>
@@ -92,6 +92,26 @@
<property name="_location" class="ptolemy.kernel.util.Location" value="[30.0, 75.0]">
</property>
</entity>
+ <entity name="AgePyramidPlot" class="edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot">
+ <property name="_location" class="ptolemy.kernel.util.Location" value="[5.0, 545.0]">
+ </property>
+ </entity>
+ <entity name="ImageDisplay3" class="ptolemy.actor.lib.image.ImageDisplay">
+ <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={112, 22, 128, 44}, maximized=false}">
+ </property>
+ <property name="_pictureSize" class="ptolemy.actor.gui.SizeAttribute" value="[700, 500]">
+ </property>
+ <property name="_location" class="ptolemy.kernel.util.Location" value="[125.0, 610.0]">
+ </property>
+ </entity>
+ <entity name="AgePyramid Display" class="ptolemy.actor.lib.gui.Display">
+ <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={65, 305, 1189, 542}, maximized=false}">
+ </property>
+ <property name="_paneSize" class="ptolemy.actor.gui.SizeAttribute" value="[1189, 498]">
+ </property>
+ <property name="_location" class="ptolemy.kernel.util.Location" value="[110.0, 475.0]">
+ </property>
+ </entity>
<relation name="relation6" class="ptolemy.actor.TypedIORelation">
<property name="width" class="ptolemy.data.expr.Parameter" value="1">
</property>
@@ -142,6 +162,14 @@
<property name="width" class="ptolemy.data.expr.Parameter" value="1">
</property>
</relation>
+ <relation name="relation13" class="ptolemy.actor.TypedIORelation">
+ <property name="width" class="ptolemy.data.expr.Parameter" value="1">
+ </property>
+ </relation>
+ <relation name="relation9" class="ptolemy.actor.TypedIORelation">
+ <property name="width" class="ptolemy.data.expr.Parameter" value="1">
+ </property>
+ </relation>
<link port="Display.input" relation="relation4"/>
<link port="Display2.input" relation="relation"/>
<link port="Life Table Display.input" relation="relation2"/>
@@ -167,4 +195,9 @@
<link port="SurvivalCurvePlot2.out" relation="relation10"/>
<link port="SurvivalCurveCalc2.dataPort" relation="relation11"/>
<link port="SurvivalCurveCalc2.out" relation="relation8"/>
+ <link port="AgePyramidPlot.output" relation="relation9"/>
+ <link port="AgePyramidPlot.dataPort" relation="relation7"/>
+ <link port="AgePyramidPlot.out" relation="relation13"/>
+ <link port="ImageDisplay3.input" relation="relation13"/>
+ <link port="AgePyramid Display.input" relation="relation9"/>
</entity>
Added: trunk/modules/science-pipes-backend/src/edu/cornell/birds/is/bap/actor/survivorship/AgePyramidPlot.java
===================================================================
--- trunk/modules/science-pipes-backend/src/edu/cornell/birds/is/bap/actor/survivorship/AgePyramidPlot.java (rev 0)
+++ trunk/modules/science-pipes-backend/src/edu/cornell/birds/is/bap/actor/survivorship/AgePyramidPlot.java 2011-10-19 01:05:05 UTC (rev 28816)
@@ -0,0 +1,220 @@
+/**
+ * '$RCSfile: RExpression.java,v $'
+ *
+ * '$Author: pea1 $'
+ * '$Date: 2009/03/25 15:51:49 $'
+ * '$Revision: 1.2 $'
+ *
+ * For Details: http://kepler.ecoinformatics.org
+ *
+ * Copyright (c) 2003 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+ * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+ * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY
+ * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
+ * UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
+package edu.cornell.birds.is.bap.actor.survivorship;
+
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+import javax.imageio.ImageIO;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.ecoinformatics.seek.R.RExpression;
+import org.jfree.chart.ChartUtilities;
+
+import edu.cornell.birds.is.bap.actor.WorkflowOutputRepositoryActorHelper;
+
+import ptolemy.actor.TypedIOPort;
+import ptolemy.actor.parameters.PortParameter;
+import ptolemy.data.AWTImageToken;
+import ptolemy.data.StringToken;
+import ptolemy.data.Token;
+import ptolemy.data.expr.Parameter;
+import ptolemy.data.type.BaseType;
+import ptolemy.kernel.CompositeEntity;
+import ptolemy.kernel.util.IllegalActionException;
+import ptolemy.kernel.util.NameDuplicationException;
+
+
+public class AgePyramidPlot extends RExpression {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2017349205384389618L;
+
+ public static Log log = LogFactory.getLog(AgePyramidPlot.class);
+
+ public TypedIOPort outPort;
+ public PortParameter titlePort;
+ public PortParameter subTitlePort;
+ public Parameter widthParameter;
+ public Parameter heightParameter;
+ public TypedIOPort dataPort;
+
+ protected WorkflowOutputRepositoryActorHelper outputServiceHelper =
+ new WorkflowOutputRepositoryActorHelper();
+
+
+ /** Construct an actor with the given container and name.
+ * @param container The container.
+ * @param name The name of this actor.
+ * @exception IllegalActionException If the actor cannot be contained
+ * by the proposed container.
+ * @exception NameDuplicationException If the container already has an
+ * actor with this name.
+ */
+ public AgePyramidPlot(CompositeEntity container, String name)
+ throws NameDuplicationException, IllegalActionException {
+ super(container, name);
+
+ dataPort = new TypedIOPort(this, "dataPort", true, false);
+
+ titlePort = new PortParameter(this, "title");
+ titlePort.setDisplayName("Title");
+ titlePort.setStringMode(true);
+
+ subTitlePort = new PortParameter(this, "subTitle");
+ subTitlePort.setDisplayName("Auxiliary Title");
+ subTitlePort.setStringMode(true);
+
+ widthParameter = new Parameter(this, "width");
+ widthParameter.setTypeEquals(BaseType.INT);
+ widthParameter.setExpression("700");
+
+ heightParameter = new Parameter(this, "height");
+ heightParameter.setTypeEquals(BaseType.INT);
+ heightParameter.setExpression("500");
+
+
+ outPort = new TypedIOPort(this, "out", false, true);
+ outPort.setTypeEquals(BaseType.OBJECT);
+
+
+ expression.setExpression("this is filled in at fire()");
+ }
+
+ public void fire() throws IllegalActionException {
+
+ // XXX currently we want png not pdf. see about support for pdf later.
+ forcePDFForOSX = false;
+
+ String title = getCompoundTitle();
+
+ StringToken dataToken = (StringToken) dataPort.get(0);
+ String demographyFileString = dataToken.stringValue();
+ File demographyFile = new File(demographyFileString);
+ if (!demographyFile.canRead()){
+ System.out.println("AgePyramid.fire() failed to get readable file from dataPort input port");
+ return;
+ }
+
+ //XXX a bit hacky:
+ numXPixels.setExpression(widthParameter.getExpression());
+ numYPixels.setExpression(heightParameter.getExpression());
+
+ String agePyramidRcode = "" +
+ "library(plotrix)\n" +
+ "demographyData <- read.table(\"" + demographyFile.toString() + "\", sep=\",\", quote=\"\\\"\", " +
+ "header = TRUE)\n" +
+ "attach(demographyData)\n" +
+ "intervals <- c(0, 5, 10, 15, 20, 25, 30, 35, 40, " +
+ "45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 200)\n" +
+ "agegrp = cut(Age, include.lowest=T, breaks=intervals)\n" +
+ "xx.pop = as.vector(100*table(agegrp[Gender==\"F\"])/length(demographyData$Gender))\n" +
+ // # let each gender be out of 100%:
+ //"xx.pop = as.vector(100*table(agegrp[Gender==\"F\"])/sum(Gender==\"F\"))\n" +
+ //"xy.pop = as.vector(100*table(agegrp[Gender==\"M\"])/sum(Gender==\"M\"))\n" +
+ "xy.pop = as.vector(100*table(agegrp[Gender==\"M\"])/length(demographyData$Gender))\n" +
+ "agelabels=c(\"[0,5]\",\"(5,10]\",\"(10,15]\",\"(15,20]\",\"(20,25]\",\"(25,30]\"," +
+ "\"(30,35]\",\"(35,40]\",\"(40,45]\", \"(45,50]\",\"(50,55]\",\"(55,60]\",\"(60,65]\"," +
+ "\"(65,70]\", \"(70,75]\", \"(75,80]\", \"(80,85]\", \"(85-90]\"," +
+ "\"(90,95]\", \"(95+\")\n" +
+ // # alternate way to plot:
+ //"tapply(Age, Gender, fivenum)\n" +
+ //"pyramid.plot(xy.pop, xx.pop, labels=agelabels, gap=5)\n" +
+ "mcol<-color.gradient(c(0), c(0), c(1,1,0.5,1), length(intervals)-1)\n" +
+ "fcol<-color.gradient(c(1,1,0.5,1), c(0), c(0), length(intervals)-1)\n" +
+ "par(mar=pyramid.plot(xy.pop, xx.pop, labels=agelabels, main=\""+title+"\", lxcol=mcol, " +
+ "rxcol=fcol, gap=2,show.values=TRUE))\n";
+
+ expression.setExpression(agePyramidRcode);
+
+ // *****
+ super.fire();
+ // *****
+
+ BufferedImage bufferedImage = null;
+ try {
+ bufferedImage = ImageIO.read(new File(home+graphicsOutputFile));
+ if (bufferedImage == null){
+ System.out.println("AgePyramid.fire bufferedImage == null ERROR");
+ }
+ storeOutput(bufferedImage);
+ outPort.send(0, new AWTImageToken(bufferedImage));
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+
+ protected void storeOutput(BufferedImage image) {
+ if (outputServiceHelper.isActive()) {
+ try {
+ byte[] bytes = ChartUtilities.encodeAsPNG(image);
+ outputServiceHelper.storeOutput(this, "image/png", null, bytes);
+ }
+ catch (IOException e) {
+ log.warn("IOException trying to encode image for storage", e);
+ }
+ }
+ }
+
+ protected String getCompoundTitle() throws IllegalActionException {
+
+ StringBuffer b = new StringBuffer();
+
+ titlePort.update();
+ Token titleToken = titlePort.getToken();
+
+ subTitlePort.update();
+ Token auxTitleToken = subTitlePort.getToken();
+
+ if (titleToken != null) {
+ b.append(((StringToken)titleToken).stringValue());
+ }
+
+ if (auxTitleToken != null) {
+ if (b.length() > 0) b.append("\n");
+ b.append(((StringToken)auxTitleToken).stringValue());
+ }
+
+ return b.toString();
+ }
+
+
+}
Property changes on: trunk/modules/science-pipes-backend/src/edu/cornell/birds/is/bap/actor/survivorship/AgePyramidPlot.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot.meta.xml
===================================================================
--- trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot.meta.xml (rev 0)
+++ trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot.meta.xml 2011-10-19 01:05:05 UTC (rev 28816)
@@ -0,0 +1,109 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE entity PUBLIC "-//UC Berkeley//DTD MoML 1//EN" "http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd">
+<entity name="AgePyramidPlot" class="edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot">
+ <display name="AgePyramidPlot"/>
+
+ <property name="KeplerDocumentation" class="ptolemy.vergil.basic.KeplerDocumentationAttribute">
+ <property name="description" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Given demography data, creates a pyramid age plot using R's plotrix package.</configure>
+ </property>
+ <property name="author" class="ptolemy.kernel.util.ConfigurableAttribute"/>
+ <property name="version" class="ptolemy.kernel.util.ConfigurableAttribute"/>
+ <property name="userLevelDocumentation" class="ptolemy.kernel.util.ConfigurableAttribute"/>
+ <property name="port:image" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Pyramid Age Plot image.</configure>
+ </property>
+ <property name="port:subTitle" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Text to use for secondary plot title</configure>
+ </property>
+ <property name="port:out" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Typically, this port should remain unused</configure>
+ </property>
+ <property name="port:title" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Text to use for primary plot title</configure>
+ </property>
+ <property name="port:dataPort" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Data to be plotted.</configure>
+ </property>
+ <property name="prop:width" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Width of chart, in pixels (hint: try 700 to start with)</configure>
+ </property>
+ <property name="prop:height" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Height of chart, in pixels (hint: try 500 to start with)</configure>
+ </property>
+ <property name="prop:auxiliaryTitle" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Text to use for secondary chart title</configure>
+ </property>
+ <property name="prop:title" class="ptolemy.kernel.util.ConfigurableAttribute">
+ <configure>Text to use for primary chart title</configure>
+ </property>
+ </property>
+ <property name="_iconSmall" class="ptolemy.kernel.util.StringAttribute" value="icon_pyramid_plot.png">
+ </property>
+ <property name="_iconMedium" class="ptolemy.kernel.util.StringAttribute" value="icon_pyramid_plot.png">
+ </property>
+ <property name="_iconLarge" class="ptolemy.kernel.util.StringAttribute" value="icon_pyramid_plot.png">
+ </property>
+ <property name="_iconXLarge" class="ptolemy.kernel.util.StringAttribute" value="icon_pyramid_plot.png">
+ </property>
+
+ <property name="title" class="ptolemy.actor.parameters.PortParameter" value="">
+ <display name="Title"/>
+ <property name="_parameterHint" class="ptolemy.kernel.util.StringAttribute">
+ </property>
+ <property name="_uiHint" class="ptolemy.kernel.util.StringAttribute" value="default">
+ </property>
+ </property>
+ <property name="subTitle" class="ptolemy.actor.parameters.PortParameter" value="">
+ <display name="Sub-Title"/>
+ <property name="_parameterHint" class="ptolemy.kernel.util.StringAttribute">
+ </property>
+ <property name="_uiHint" class="ptolemy.kernel.util.StringAttribute" value="default">
+ </property>
+ </property>
+ <property name="width" class="ptolemy.data.expr.Parameter" value="700">
+ <display name="Width (px)"/>
+ <property name="_parameterHint" class="ptolemy.kernel.util.StringAttribute">
+ </property>
+ <property name="_uiHint" class="ptolemy.kernel.util.StringAttribute" value="default">
+ </property>
+ </property>
+ <property name="height" class="ptolemy.data.expr.Parameter" value="500">
+ <display name="Height (px)"/>
+ <property name="_parameterHint" class="ptolemy.kernel.util.StringAttribute">
+ </property>
+ <property name="_uiHint" class="ptolemy.kernel.util.StringAttribute" value="default">
+ </property>
+ </property>
+ <port name="dataPort" class="ptolemy.actor.TypedIOPort">
+ <property name="input"/>
+ <display name="Data Input"/>
+ </port>
+ <port name="out" class="ptolemy.actor.TypedIOPort">
+ <property name="output"/>
+ <display name="Image"/>
+ </port>
+ <port name="title" class="ptolemy.actor.parameters.ParameterPort">
+ <property name="input"/>
+ <display name="Title"/>
+ <property name="tokenConsumptionRate" class="ptolemy.data.expr.Parameter" value="1">
+ <display name="tokenConsumptionRate"/>
+ <property name="_parameterHint" class="ptolemy.kernel.util.StringAttribute">
+ </property>
+ <property name="_uiHint" class="ptolemy.kernel.util.StringAttribute" value="default">
+ </property>
+ </property>
+ </port>
+ <port name="subTitle" class="ptolemy.actor.parameters.ParameterPort">
+ <property name="input"/>
+ <display name="Sub-Title"/>
+ <property name="tokenConsumptionRate" class="ptolemy.data.expr.Parameter" value="1">
+ <display name="tokenConsumptionRate"/>
+ <property name="_parameterHint" class="ptolemy.kernel.util.StringAttribute">
+ </property>
+ <property name="_uiHint" class="ptolemy.kernel.util.StringAttribute" value="default">
+ </property>
+ </property>
+ </port>
+
+</entity>
\ No newline at end of file
Property changes on: trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot.meta.xml
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.SurvivorshipDataActor.meta.xml
===================================================================
--- trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.SurvivorshipDataActor.meta.xml 2011-10-19 00:58:13 UTC (rev 28815)
+++ trunk/modules/science-pipes-frontend/WebContent/editor/parts/edu.cornell.birds.is.bap.actor.survivorship.SurvivorshipDataActor.meta.xml 2011-10-19 01:05:05 UTC (rev 28816)
@@ -45,7 +45,7 @@
<configure>The local name of the file containing data for the cemetery. This file name is used by other components to read the file and analyze the data within.</configure>
</property>
<property name="port:cemeteryName" class="ptolemy.kernel.util.ConfigurableAttribute">
- <configure>Echoes the name of cemetery chosen </configure>
+ <configure>Echoes the name of the chosen cemetery.</configure>
</property>
<property name="prop:cemeterySearchText" class="ptolemy.kernel.util.ConfigurableAttribute">
<configure>Which is the cemetery of interest?</configure>
Modified: trunk/modules/science-pipes-frontend/WebContent/editor/parts/survivorship-actors.xml
===================================================================
--- trunk/modules/science-pipes-frontend/WebContent/editor/parts/survivorship-actors.xml 2011-10-19 00:58:13 UTC (rev 28815)
+++ trunk/modules/science-pipes-frontend/WebContent/editor/parts/survivorship-actors.xml 2011-10-19 01:05:05 UTC (rev 28816)
@@ -11,6 +11,7 @@
<actor class="edu.cornell.birds.is.bap.actor.crossingboundaries.calc.DistinctDataUnion" name="Data Union" guid="edu.cornell.birds.is.bap.actor.crossingboundaries.calc.DistinctDataUnion"/>
</group>
<group name="Output" expanded="true" id="output">
+ <actor class="edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot" name="Age Pyramid Plot" guid="edu.cornell.birds.is.bap.actor.survivorship.AgePyramidPlot"/>
<actor class="edu.cornell.birds.is.bap.actor.survivorship.LifeTable" name="Life Table" guid="edu.cornell.birds.is.bap.actor.survivorship.LifeTable"/>
<actor class="edu.cornell.birds.is.bap.actor.survivorship.SurvivalCurvePlot" name="Survival Curve Plot" guid="edu.cornell.birds.is.bap.actor.survivorship.SurvivalCurvePlot"/>
<actor class="edu.cornell.birds.is.bap.actor.jfreechart.DataSeriesLabeler" name="Data Labeler" guid="edu.cornell.birds.is.bap.actor.jfreechart.DataSeriesLabeler"/>
More information about the Kepler-cvs
mailing list