Projects

This page highlights some of my work from classes and research.


💡 Service Lights

Click to expand

University of California, Santa Barbara (UCSB)
ENVS 193DS – Data Science for Environmental Studies

Ongoing project that explores the relationship between lighting conditions (working vs. broken) and service call outcomes (needing help or not) using a self-collected dataset (n=108). Created a bar chart, summary table, and a blinking lightboard animation (gif). See visuals.

Tools Used

RStudio (tidyverse, here, flextable, janitor, ggtext, ggfx, gganimate, showtext), Quarto

Code Snippet

This converts help and working columns in service_data to TRUE/FALSE values by making their text uppercase and then to logical type, then saves the result as a new object called clean_service_data.

clean_service_data <- service_data |>
  mutate(
    help = as.logical(toupper(help)),
    working = as.logical(toupper(working))
  )

Visuals

Service Light Table

Service Light Table

Bar Chart

Bar Chart

Blinking Lights Animation

Blinking Lights Animation

Reflection

This project made me think more critically about data. Developing a personal data question, then collecting and working with my own dataset, helped me realize just how messy real-world data can be. It also made me appreciate the value of teamwork. This was a solo project - having others to help troubleshoot, clean, and interpret the same data makes a big difference.

Resources

View Live | GitHub Repo


🌱 Soil Bioturbation

Click to expand

Under construction…


💧 Fog Harp

Click to expand

Under construction…


🦨 Skunk Population

Click to expand

Under construction…


🦎 Rough Skinned Newt vs. Garter Snake

Click to expand

Allan Hancock College
BIOL 155 – Zoology

Collaborative video project with Darlene Vera, with help from friends in the Department of Fine Arts.

The co-evolution of toxin production in rough-skinned newts and toxin resistance in garter snakes served as the focus of a short film designed to make complex science accessible. The project combined storytelling, visual art, and evolutionary biology to communicate this dynamic relationship.

Tools Used

Scriptwriting, Storyboarding, Filmmaking, Adobe Premiere (editing)

Reflection

This project gave me a creative way to engage with evolutionary biology. Working with visual storytelling reminded me that science communication can be just as impactful as scientific research.

Watch the Video


🐦 Species & Functional Richness Comparison

Click to expand

UCSB-Smithsonian Scholars Program
Advanced Field Research Training at the Smithsonian Tropical Research Institute (STRI) in Panama, Summer 2023

Final project from an immersive data science and field course. This project compares species richness and functional richness of bird communities between Barro Colorado Island (BCI) and Pipeline Road (mainland Panama). We used autonomous recorders (AudioMoths) and avian trait databases to examine diversity patterns in two distinct habitats. Results reflect learning outcomes rather than comprehensive biodiversity assessments.

Project Team

The Orependulas Brandon Leon, Rebecca Martinez, Daniel Romero, Mathew Silva, and Zachary Wilson.

Tools Used

  • AudioMoths
  • RStudio (tidyverse, mFD, phytools)
  • BirdNET-Analyzer (Cornell Lab of Ornithology)
  • AVONET – Comprehensive bird trait dataset
  • Birds of Panama – BirdLife International

Process

→ Deployed 12 AudioMoths to record dawn chorus

→ Conducted point counts for visual confirmation

→ Analyzed 24 audio files using BirdNET-Analyzer

→ Combined detections with trait data from AVONET and Birds of Panama

→ Created visualizations in RStudio

Code Snippet

Code for species richness bar graph.

merged_df <- bind_rows(pipeline_found_joined, bci_birds_joined)

merged_df <- merged_df %>%
  mutate(location = ifelse(row_number() <= 26, substr(location, 1, 4), location)) %>%
  mutate(location = ifelse(row_number() >= 27 & row_number() <= 66, substr(location, 1, 3), location))

family_count <- merged_df %>%
  group_by(Family, location) %>%
  summarize(num_species = n())

ggplot(family_count, aes(x = Family, y = num_species, fill = location)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Number of Species by Family and Location",
       x = "Family",
       y = "Number of Species") +
  theme_minimal() +
  scale_y_continuous(breaks = seq(0, max(family_count$num_species), 1)) +
  theme(axis.text.x = element_text(angle = 75, hjust = 1), axis.text = element_text(size = 8))
  

Visuals

Under construction…

Poster

Presented findings at the 2023 Cal Poly Summer Internship Research Symposium and the 2023 UCSB Fall Undergraduate Research Showcase.

Comparison of Species Richness & Functional Richness Between BCI and Pipeline Road

Comparison of Species Richness & Functional Richness Between BCI and Pipeline Road

Reflection

This project helped me practice new skills in fieldwork, data analysis, and using R. It was exciting to work with real data that we collected ourselves in the field.