Categories

cg measure quality control: the process

Members of Team Echinacea do a good job while measuring. Members of Team Echinacea are also humans (mostly, I think). We make mistakes! Maybe we searched for a plant that is there, but we couldn’t find it. Or maybe we had missteps while recording data. That’s why an essential part of our work each summer is identifying errors and inconsistencies in our database and then revisiting these in the field to check our work, as well as searching again for any plants we marked as can’t finds.

Thanks to the ghost of interns past, there is quite a bit of framework and functions that already exist to handle this work. It’s also a bit of a hodgepodge to keep track of, especially when you don’t have last year’s cg intern to show you around (we miss you Lindsey!) Here, I am documenting my personal journey in figuring out the who what when where why and hows of this process. I’ll continue updating this as I learn more.

Step 1: preRaw -> raw

The first step in the process is to take the data from the visors, which we call “preRaw” and turn it into a “raw” state that we can more easily work with. This is mostly a quality control step that a) formats the data how we like it and b) identifies and eliminates any carriage return issues that would be a source of head scratching down the line.

We do this step in a single script, but in separate steps for exPt08, exPt10, and then the rest of the plots as one. The same goes for the head data. Ideally, we would put in the work to combine all plots into one. Unfortunately there is a labor shortage, shall we say.

2024 script: ~cgData/summer2024/measureRaw/makeRawMeasure.R

Step 2: raw -> good

Next, we put the data through some more formatting tweaks. We also create a column called “recQ” (record quality) and tentatively mark every record we have as “good”. Any record with this field marked as “good” will be included in measureGood/plantAll_2024.txt and measureGood/headAll_2024.txt. Even prior to fixing errors, these can be useful in other processes, like setting up harvest.

2024 scripts:

  • ~/cgData/summer2024/measureGood/makeGoodPlantAll_2024.R
  • ~/cgData/summer2024/measureGood/makeGoodHeadAll_2024.R

Step 3: making “good” actually good

That’s just the trick, isn’t it? There are a number of ways we go about getting good records. For some records, the mistake is obvious and easy to fix in R. When this is the case, you make the change in the offending column(s) directly in “pp” or “hh”, the plant and head measure data frames, respectively. If it’s as simple as updating plant status to basal, only the plant status field needs to be update and the recQ field remains set to good. If the entire record is bad, you can modify recQ to be something other than “good” to keep the record from being included in plantAll or headAll (e.g., “dup record”).

Other times, we have to revisit the location in the field. When this is the case, we identify the issue and change recQ from “good” to a descriptive note about the issue. For example, any issue that I feel is worthy of a revisit in the field, I make sure to change the recQ to “revisit; xxx” with “xxx” being a brief note about the issue. The hh df is special in that it also has an “auditNote” column, where you can add additional notes about any issues. I’m not sure why this is exclusive to the head data.

Some ways we identify issues:

  • compare2vectors()
    • Ol’ reliable. I use this first thing to compare the cgPlaIds that are in the plot (use getPlaIds(), but don’t forget to add Amy’s annex in p1. side note, add Amy’s annex to getPlaIds()) to cgPlaIds we have measure records for (in pp)
    • This alerts me of any records missing and any dups
  • compareStatusToPrior()
    • Location: ~/functions.R
    • specific to plantMeasure
    • This function, when assigned to a variable, spits out a list of many things and is very useful in identifying errors. It compares the status of the plant this year to the previous year’s and points out when there are issues. As far as I can tell, it only pulls records from pp that have a “good” recQ, so once you make updates you no longer see them pop up as errors here
    • Some of the list items I’ve used (or seen others use):
      • $summary.df
        • summarizes all the varying combinations of prior and current statuses (referred to as “conditions”) and labels them as either an error (TRUE), not an error (FALSE) or NA (probably an error? Look into this if you encounter it).
      • $plaIdsByCondition
        • Lists which plaIds have which condition. I found it useful for finding plaIds with conditions that were labeled NA in summary.df
      • $search0.err
        • Contains a list of cgPlaIds whose records certainly have errors (were labeled as TRUE in summary.df)
        • This can be used to easily fix or otherwise modify records that need it
      • There are a bunch of other list items that I have not encountered in use yet
  • compareMainFormandHeadSubform2024.R
    • Location: ~cgData/summer2024/issues.hdCt/compareMainFormAndHeadSubform2024.R
    • Where we go about the process of comparing plant data to the corresponding head data, or lack thereof.
    • Sets up plant and head data to be put through function compareMeasureAndHeadRecords()
      • Function source: ~/cgData/summer2022/makeFunctionCompareMeasureAndHeadRecord.R
        • Maybe we could move this into functions.R
    • Some issues identified with this function require returning to pp in makeGood to fix issues.
    • Others require fieldwork. The script produces 2 csvs (called datasheets in the script) to assist with this fieldwork. Notes taken on these datasheets in the field can be used to update pp or hh in makeGood. Datasheet examples:
      • Dropbox/CGData/125_measure/measure2024/searchIssues/exPt02searchHeadIssues.csv
      • Dropbox/CGData/125_measure/measure2024/searchIssues/exPt02searchHeadIssuesSupp.csv
  • makeLfThresholdChecker2024.R
    • Location: ~/cgData/summer2024/issues.lf/makeLfThresholdChecker2024.R
    • Checks to see if any leaves are suspiciously long or if counts are suspiciously high
    • The end goal of this process is also a csv datasheet to return to the plot to record the correct info and then fix it directly in pp. When I did p2, there was no infrastructure to make this datasheet and it looked like Lindsey may have just run the code here and then run the code over in makeLfErrorChecker.R (next bullet) without clearing the environment. Maybe not up to code but this is what I did too. That makes just one datasheet for the two scripts, which is more convenient in the field. Seems like these two could be wrapped into one script.
  • makeLfErrorChecker2024.R
    • Location: ~cgData/summer2024/issues.lf/makeLfErrorChecker2024.R
    • How we check any issues that could be associated with leaf data, primarily checks for any missing or illogical data (e.g., cauline leaf is not recorded for a flowering plant or cauline leaf is recorded for a basal plant)
    • This script also produces a csv datasheet that is put into dropbox. We can use this datasheet to collect the correct data in the field and then make the updates directly to pp. Example:
      • Dropbox/CGData/125_measure/measure2024/searchIssues/fixLfErrorsExPt02.csv

To be continued…

Goodbye, Minnesota

Goodbye for now, Minnesota and Team Echinacea! My fellow RET teacher, Brittany, and I are back to school. Brittany started back this week and I start Monday. For our project, Brittany and I worked together this summer to locate and describe the rare plant, Astragalus adsurgens, also called Prairie Milkvetch. We searched many remnant sites but were able to find plants at only two locations. Brittany used the Chicago Botanic Garden’s Plants of Concern app to submit information about the plants that will help us understand how these rare plant subpopulations are doing. I created a gps layer so that they can easily be revisited in future years and made a small seed collection. These seeds will hopefully be the start of a restoration project that will reintroduce A. adsurgens into suitable sites in Douglas County.

Prairie milkvetch (Astragalus adsurgens) in bloom in a remnant prairie.

The seeds of Prairie milkvetch are enclosed in a two-sided pod and multiple pods attach to the stem.

I also spent time this summer collecting Carex seeds that will be planted in recruitment plots. The recruitment plots will grow Carex plants for the purpose of generating even more seed that can be collected and used in restoration projects or added to existing experimental plots. I kept track of the sites I collected seed from so that the collection contains locally-adapted, genetically diverse sample.

Short-beaked sedge (Carex brevior) found around Hegg Lake.

I chose to work with seed collections for my project this summer because the seed collection represents the first step in establishing a long-term research project in a restoration setting. At La Salle High School in Yakima, WA, we are fortunate to have riparian habitat on campus that can be used as outdoor learning space. However, it is horribly invaded with a who’s who of Washington’s worst invasive plant species. I have created a lesson plan in which students use seed collections for a native plant restoration project on campus.  Students will have opportunities to test hypotheses related to germination and seedling survival, learn about plant anatomy and life cycles, and work with tribal biologists on projects that are important to our community. This will be a long-term project with probably a few wrong turns and negative results as is the way with science, but each class of students will have the opportunity to work on one or two important questions related to successfully restoring the vegetation on our creek.

Silverleaf Scurfpea Cross Pollination Experiment

In past years team echinacea has noticed that silverleaf scurfpea very rarely produces a seed. Some would estimate over ninety percent of the time the pod contains no seed. This brings about many questions concerning why sliverleaf scurfpea produces so few seeds. The focus of this experiment is to get an idea of whether or not the problems related to going to seed are pollination related?

The first step of the experiment was to was to look at the sliverleaf scurfpea’s flowers under a microscope to see if the flowers were producing pollen and see if it was possible to cross pollinate such a small flower in the field. The flowers of the sliverleaf scurfpea were producing pollen and with some experimentation I found a way to effectively cross pollinate the flowers. I found that the best way to get the pollen out out of the flowers was to use a dark colored toothpick and gently open the petals of the flower so that the anthers are more visible. following that I would lightly brush the anthers with the toothpick so that it would collect the pollen. I would then gently open the petals of the other flower and bush the toothpick over the stigma.

The second phase of the experiment included going out into the field and cross pollinating the silverleaf scurfpea. This took place at the site Nice Island on July 24th and July 31st of 2024. The plants were chosen at random and each plant was over 20 meters away from the plant it was being crossed with. On each plant two flowers were randomly chosen. One as the flower that would be crossed, identified by a blue twist tie, and the other as a control variable, identified by a yellow twist tie. Following the cross pollination both twist tied flowers were covered in a pollinator exclusion bag. This was repeated for 6 different silverleaf scurfpea plants at Nice Island. Each plant involved in the silverleaf scurfpea experiment was marked using a green flag.

This work sets the team up for the final step of the experiment. The final step will be to return to the cross pollinated plants in about 2-3 weeks and see if the pods that were pollinated produced a seed. This can be done by squeezing the pods. The pod will either contain a seed or not contain a seed.

Silverleaf Scurfpea in Cross Pollination Experiment
Silverleaf Scurfpea in Cross Pollination Experiment
Silverleaf Scurfpea Cross Pollination Experiment at Nice Island

total demography continues!

We are busy with fieldwork here in western MN! Between measuring, floral assessments, emergence trapping, searching for flowering plants, and finishing up our pollen and nectar collections, we have our work cut out for us… We’ve been making steady progress with total demo. As of this morning, we have completed 34% of the locs where we search for echinacea.

ExPt01 progress

The team is making excellent time! These fast measuring skills no doubt transferred to speedy times at Flekkefest this weekend.

Measuring, e-trapping, and some colorful friends

With a smaller crew and slightly soggy start to the morning, it was all-hands-on-deck as we continue to chip away at measuring experimental plot 1. We made great progress today, but still found time to stop and take pictures of cool critters! After lunch, we all headed out to retrieve and deploy emergence traps. It was a busy day for e-trapping, with three teams visiting eight sites in total.

Slowly but surely…

Another crew of 6 today brought us up past 38% done measuring p1. Yeehaw!

Measuring p1 progress update

Small crews can make big strides! There were only 6 of us out there this morning, but we managed to crack 30% done.

Measuring exPt01 and Brittany’s last day

The team takes its first steps into measuring experimental plot 1

Friday, 26 July, 2024, was the first day we started measuring p1 this year! Coincidentally, this was the same day we started last year. This monumental task involves visiting 10992 positions in the plot and assessing the status of the plants there (or not, in the case of plants we have not been able to find in >3 years. RIP. Presumably.) After measuring again this morning, I booted up the old progress tracker (in the cgData repo, if you ever need it) to see how we’re doing. After making some adjustments (for the colorblind out there), here’s our progress over the last two days:

Today was also RET Brittany’s last day with the field team. Brittany, you will be sorely missed, and we hope you bring a bit of the prairie to share with your students!

Brittany evaluates Heterostipa spartea reproduction in p1

Total Demo-meter Update

We’re making great progress with total demo! 18.9% done.