[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