Effects of insecticide on bees (usda.gov). Field and Lab data regarding the effects of 4 sublethal concentrations of a neonicotinoid insecticide (Imidacloprid) on honey bees and about a dozen native bee species.
Details
The columns in the data are in order:
- Level of Sociality
- Degree of floral specialization
- Habitat floral host
- bee species
- bee genus/species
- Date bee captured and installed in bioassay unit (Julian day)
- bee sex
- Imidacloprid concentration (parts per billion)
- bee longevity in bioassay (days)
- days paralyzed
- days active
- % of days bee is paralyzed
The parts you will need for the methods you are tested on are:
-
Level of Sociality
this indicates whether a bee is social or solitary -
bee genus/species
This states the genus or species of the bee -
Imidacloprid concentration (parts per billion)
States the concentration of insecticide used -
bee longevity in bioassay (days)
This states the days the bee survived -
days paralyzed
This states the amount of days the bee was paralyzed
Required Methods To Implement (graded)
We will grade the following methods. Please note, that while there may be different ways to implement them, and you are free to even write helper methods (which we did ourselves) - we need the method names to match the following specification.
CSVReader
This file specifically is used to read the Comma Separated Value files using a Scanner Object. We also used it to help store the indices of the columns in constant variables for easy use in GenderStats.java.
public void initialize(String file)
This method will initialize a class level scanner object based on a File (new File(…)). The name of the file will be passed in. You can assume it is a correct name, but you should also try and catch the IOException that is required by calling new file. The following code can help you get started. You may also want to look at the Digital Humanities lab for an example.
Here is some example code that will help you.
try {
fileScanner = new Scanner(new File(file));
}catch (IOException io) {
io.printStackTrace();
}
public boolean hasNext()
Returns if the scanner has more lines to read if the scanner has been initialized. If the scanner hasn’t been initialized, it will return false. Looking at how scanner checks to see if more lines need to be read will help with this method.
public String[] getNext()
If the scanner has more lines to read, it reads the line and returns a String array of all the values in the line - broken up by the comma (‘,’) delimiter! This is essentially how CSV files are stored.
Stats.java
This file is the main driver file of your program. It will display the averages for the given input (Sociality or Genus/Species).
The final output will print out the average imidacloprid concentration, longevity, and days paralyzed for the given input (Sociality or Genus/Species). Use the following examples as a template for the output
Example given genus (Apis):
Averages for Apis bees:
Average Imidacloprid Concentration: 32.02
Average Longevity: 7.06
Average Days Paralyzed: 1.71
Example given Sociality (Solitary):
Averages for Solitary bees:
Average Imidacloprid Concentration: 29.48
Average Longevity: 5.27
Average Days Paralyzed: 1.33
Example given invalid Genus/Species:
Genus: Test not found
Suggestions / Insights
Before you start coding it is always good to plan your code out. Look at what each method is asking for and think about how you can accomplish it. (Think about how an average is calculated, and how to compare strings.)
If you would like to expand upon the data there are many different things you could look for. Examples are:
- Floral host differences across averages
- Sex differences across averages
- Overall statistics of the bees
These are just examples, feel free to come up with your own ideas of sorting/processing the data.
Reference
- Sampson, Blair J.. (2019). Raw data for imidacloprid effects on native bees. Ag Data Commons. https://doi.org/10.15482/USDA.ADC/1503843. Accessed 2020-11-7.