Description

Studying the population dynamics of groups of organisms provides an example of how physics (nonlinear dynamics, ODEs, limit cycles, chaos, etc.) can be used to gain further insight into fundamental biological processes.



Protocols

Rotifers

Goal: Maintain rotifer population in an algae culture in order to observe predator-prey dynamics between the two species.

Download pdf

  • Resting eggs (Brachionus manjavacas)
  • 2L algae (Tetraselmis suecica)
  • 2L 15ppt ASW (artificial salt water)
  • 2L 15ppt F media
  • Nephelo flask (2)
  • Test tubes
  • Double air pump
  • Glass rod (hollow) (2)
  • Plastic tubing
  • Gang valve (2)
  • Small petri dish
  • Parafilm
  • 1.7mL pipettes
  • DIY incubator
  • Fluorescent lightbulb
  • MicroSD card
  • MicroSD card adapter
  • MicroSD transflash breakout board
  • Ambient light sensor (TEMT6000) (optional)
  • Header pins
  • 10X microscope objective (or 60X jeweler's lens)
  • 3D printed lens holder
  • LED strip lights
  • Wooden dowels

    15ppt ASW Preparation

  1. Measure out 15g/L of salt (adjust according to desired volume).
  2. Add salt to required volume of DI water and stir until dissolved.
  3. Check the salinity using the refractometer with 20uL of ASW.
  4. Adjust salt concentration/water volume as needed.

  5. 15ppt F Media preparation

  6. Measure out and add chemicals according to the list below (metal and vitamin solutions are stored at 4 deg C) and dissolve in 1L DI Water.
    • Sea salts 15g
    • KNO3 150mg
    • NaH2PO4 5mg
    • Metals 2mL
    • Vitamins 2mL
  7. Mix media until all ingredients are dissolved.

  8. Hatching Protocols


  9. Put 15ppt ASW into a small petri dish (enough to cover the bottom).
  10. Put resting eggs into the petri dish and label with name, date, and time.
  11. Place the petri dish under fluorescent light and leave eggs to hatch overnight (~16hrs).
  12. Adjust shaking incubator settings to maintain room temperature (25-28 deg C), provide constant light, and write the light sensor data to an SD card (details below).

  13. Culturing Protocols

    Our algae was cultured in F media, so all cultures are essentially 100% F media, but the given percentage of algae represents the initial prey population.


    Experiment 1: Predator-prey observation


  14. Prepare a 150mL culture of 75% F media and 25% algae.
  15. Aliquot 125mL into a Nephelo flasks and 25mL into a test tube and cover the tops of both containers with parafilm.
  16. Attach one end of the plastic tubing to the air pump using a gang valve and the other end to a glass rod.
  17. Poke a hole in the parafilm and aerate both cultures with an air pump (flask and test tube).
    • For algae only: set the gang valve so that the airflow is medium-high (culture should be bubbling).
    • For rotifers in algae culture: set the gang valve so that airflow is low (only one or two visible bubbles).
  18. Once rotifers have hatched, use a pipette and an empty petri dish to count and place ~50 rotifers in the Nephelo flask.
  19. At this point, all rotifers are female; after four days, new resting eggs will be produced.

  20. Experiment 2: Light Variation


  21. Prepare a 250mL culture of 75% F media and 25% algae.
  22. Aliquot 125mL into two Nephelo flasks and cover the tops of both containers with parafilm.
  23. Attach one end of the plastic tubing to the air pump using a gang valve and the other end to a glass rod.
  24. Poke a hole in the parafilm and aerate both cultures with an air pump (flask and test tube).
    • For algae only: set the gang valve so that the airflow is medium-high (culture should be bubbling).
    • For rotifers in algae culture: set the gang valve so that airflow is low (only one or two visible bubbles).
  25. Once rotifers have hatched, use a pipette and an empty petri dish to count and place ~50 rotifers in each Nephelo flask.
  26. Place one culture under fluorescent light bulb and cover the other to hide it from the light (both inside incubator).

  27. Experiment 3: Population variation


  28. Prepare a 250mL culture of 75% F media and 25% algae.
  29. Aliquot 125mL into two Nephelo flasks and cover the tops of both containers with parafilm.
  30. Attach one end of the plastic tubing to the air pump using a gang valve and the other end to a glass rod.
  31. Poke a hole in the parafilm and aerate both cultures with an air pump (flask and test tube).
    • For algae only: set the gang valve so that the airflow is medium-high (culture should be bubbling).
    • For rotifers in algae culture: set the gang valve so that airflow is low (only one or two visible bubbles).
  32. Once rotifers have hatched, use a pipette and an empty petri dish to count and place ~50 rotifers in one Nephelo flask.
  33. Place both cultures under fluorescent light bulb inside the incubator.

  34. Experiment 4: Predator population variation


  35. Prepare a 250mL culture of 75% F media and 25% algae.
  36. Aliquot 125mL into two Nephelo flasks and cover the tops of both containers with parafilm.
  37. Attach one end of the plastic tubing to the air pump using a gang valve and the other end to a glass rod.
  38. Poke a hole in the parafilm and aerate both cultures with an air pump (flask and test tube).
    • For algae only: set the gang valve so that the airflow is medium-high (culture should be bubbling).
    • For rotifers in algae culture: set the gang valve so that airflow is low (only one or two visible bubbles).
  39. Once rotifers have hatched, use a pipette and an empty petri dish to count and place ~10 rotifers in one Nephelo flask and ~50 in the other.
  40. Place both cultures under fluorescent light bulb inside the incubator.

  41. Experiment 5: Prey population variation


  42. Prepare two 125mL cultures one of 75% F media and 25% algae and one of 50% F media and 50% algae.
  43. Aliquot each culture into a Nephelo flask and cover the tops of both containers with parafilm.
  44. Attach one end of the plastic tubing to the air pump using a gang valve and the other end to a glass rod.
  45. Poke a hole in the parafilm and aerate both cultures with an air pump (flask and test tube).
    • For algae only: set the gang valve so that the airflow is medium-high (culture should be bubbling).
    • For rotifers in algae culture: set the gang valve so that airflow is low (only one or two visible bubbles).
  46. Once rotifers have hatched, use a pipette and an empty petri dish to count and place ~10 rotifers in each Nephelo flask.
  47. Place both cultures under fluorescent light bulb inside the incubator.

  48. Modifications to shaking incubator:

  49. (optional) Ambient light sensor (TEMT6000) to track the relative algae concentration, measured by the "greenness" of the flask.
  50. Temperature sensor (TMP36) used to maintain ambient temperature (25-28 deg C).
  51. Light and temperature sensor data is written to a text file on a microSD card.
  52. Replace incandescent lightbulb with a fluorescent lightbulb and change the relay settings so that the culture receives constant light.

With TEMT6000:

 
#include 
#include 
#include 

//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
                        
                        //the resolution is 10 mV / degree centigrade with a
                        //500 mV offset to allow for negative temperatures

int servoPin = 6;
int RELAY1 = 9;
int lightSensor;
const int chipSelect = 8;

Servo servo;

// servo position (degrees)
int angle = 0;

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup()
{
  Serial.begin(9600);  //Start the serial connection with the computer
                       //to view the result open the serial monitor 
  pinMode(RELAY1, OUTPUT);

 servo.attach(servoPin);
  
   Serial.print("Initializing SD card...");   
   // check for SD card   
   if (!SD.begin(chipSelect)){     
    Serial.println("SD card failed or not present");     
    return;   }
    Serial.println("SD card initialized"); 
    }
 
void loop()                     // run over and over again
{

 //getting the voltage reading from the temperature sensor
 int reading = analogRead(sensorPin);  
  
 // converting that reading to voltage, for 3.3v arduino use 3.3
 float voltage = reading * 5.0;
 voltage /= 1024.0; 
 
 // print out the voltage
 Serial.print(voltage); Serial.println(" volts");
 
 // now print out the temperature
 float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset
                                               //to degrees ((voltage - 500mV) times 100)
 Serial.print(temperatureC); Serial.println(" degrees C");


  if (temperatureC < 30) {
    digitalWrite(RELAY1,HIGH);
   } else {
   digitalWrite(RELAY1,LOW);
  }

  // scan from 0 to 180 degrees
  for(angle = 0; angle < 40; angle=angle+20)  
  {                                  
    servo.write(angle);               
    delay(300);                   
  } 
  // now scan back from 180 to 0 degrees
  for(angle = 40; angle > 0; angle=angle-20)    
  {                                
    servo.write(angle);           
    delay(300);       
  } 

 // start string for datalogging
  String tempdata = "";
  String data1 = "";
  String data2 = "";
  String data3 = "";

  // read in data from TEMT6000 and TMP36
lightSensor = analogRead(1);
tempdata += String(temperatureC);
  data1 += String(lightSensor);

  // convert to volts and lux
  float volts = lightSensor * 3.3 / 1024.0;
  float amps = volts / 10000; // across 10k resistor (on chip)
  float lux = amps * 2000000;

  data2 += String(volts);
  data3 += String(lux);
  
  // print output to serial monitor
  //Serial.println("voltage:");
  //Serial.println(volts);
  //Serial.println("\n");
  //Serial.println("lux:");
  //Serial.println(lux);
  //Serial.println("\n");
 
 // open temperature sensor data file
  File dataFile0 = SD.open("temp.txt", FILE_WRITE);

  // write to file
  if (dataFile0) {
    dataFile0.println(tempdata);
    dataFile0.println("\n");
    dataFile0.close();
  }
  
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening temp.txt");
  }

  // open sensor data file
  File dataFile1 = SD.open("sensor.txt", FILE_WRITE);

  // write to file
  if (dataFile1) {
    dataFile1.println(data1);
    dataFile1.println("\n");
    dataFile1.close();
  }
 
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening sensor.txt");
  }
  
  // open voltage data file
  File dataFile2 = SD.open("voltage.txt", FILE_WRITE);

  // write to file
       if (dataFile2) {
       dataFile2.println(data2);
       dataFile2.println("\n");
       dataFile2.close();
    }
  
    // if the file isn't open, pop up an error:
    else {
      Serial.println("error opening voltage.txt");
    }
    
   // open lux data file
    File dataFile3 = SD.open("lux.txt", FILE_WRITE);
  
    // write to file
    if (dataFile3) {
      dataFile3.println(data3);
      dataFile3.println("\n");
      dataFile3.close();
    }
    
    // if the file isn't open, pop up an error:
    else {
      Serial.println("error opening lux.txt");
    }
  
  delay(300);
 }

						

Without TEMT6000


#include 
#include 

//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
                        
                        //the resolution is 10 mV / degree centigrade with a
                        //500 mV offset to allow for negative temperatures
                        
int RELAY1 = 9;

const int chipSelect = 8;

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup()
{
  Serial.begin(9600);  //Start the serial connection with the computer
                       //to view the result open the serial monitor 
  pinMode(RELAY1, OUTPUT);
  
   Serial.print("Initializing SD card...");   
   // check for SD card   
   if (!SD.begin(chipSelect)){     
    Serial.println("SD card failed or not present");     
    return;   }
    Serial.println("SD card initialized"); 
    }
 
void loop()                     // run over and over again
{

 //getting the voltage reading from the temperature sensor
 int reading = analogRead(sensorPin);  
  
 // converting that reading to voltage, for 3.3v arduino use 3.3
 float voltage = reading * 5.0;
 voltage /= 1024.0; 
 
 // now print out the temperature
 float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset
                                               //to degrees ((voltage - 500mV) times 100)
 Serial.print(temperatureC); Serial.println(" degrees C");


  if (temperatureC < 30) {
    digitalWrite(RELAY1,HIGH);
   } else {
   digitalWrite(RELAY1,LOW);
  }

 // start string for datalogging
  String tempdata = "";


  // read in data from TMP36
tempdata += String(temperatureC);

 
// open temperature sensor data file
  File dataFile0 = SD.open("temp.txt", FILE_WRITE);

//   write to file
  if (dataFile0) {
    dataFile0.println(tempdata);
    dataFile0.println("\n");
    dataFile0.close();
    Serial.print(tempdata);
    Serial.println("\n");
  }
  
//   if the file isn't open, pop up an error:
  else {
    Serial.println("error opening temp.txt");
  }

  
  delay(3000);
 }


						
						
						
						


Assignments and Results


Module 4 Homework