Genetic, developmental and neural changes underlying evolving butterfly mate preference
Data files
Sep 29, 2023 version files 360.60 MB
-
heliconius_cydno_alithea.yellow.decorated.gff3.gz
12.14 MB
-
heliconius_cydno_alithea.yellow.fa.gz
96.87 MB
-
heliconius_cydno_RNAseq.2023.tgz
251.59 MB
-
README.md
6.18 KB
Oct 22, 2024 version files 3.05 GB
-
gwas.tar.gz
2.80 GB
-
README.md
20.74 KB
-
rnaseq.tar.gz
247.73 MB
Dec 16, 2024 version files 3.05 GB
-
electrophysiology.zip
83.59 KB
-
gwas.tar.gz
2.80 GB
-
README.md
22.73 KB
-
rnaseq.tar.gz
247.73 MB
Sep 04, 2026 version files 6.28 GB
-
electrophysiology.tar.gz
3.22 GB
-
gwas.tar.gz
2.80 GB
-
README.md
43.84 KB
-
rnaseq.tar.gz
247.73 MB
Abstract
Many studies have linked genetic variation to behavior, but the links between that variation and the neural circuits that drive behavior remain elusive. We investigated the architecture of mate choice behavior in Heliconius butterflies, which use vision to identify preferred mates based on wing color patterns. We found that Heliconius cydno mate preference is associated with inter-photoreceptor inhibition of ultraviolet-sensitive photoreceptors (PRs) by long-wavelength sensitive PRs; identified a small number of genetic loci associated with preference variation; and began to link these multiple layers of behavior variation together through analyses of developmental gene networks. Our results support the idea that altered peripheral neural computations, driven by changes to underlying developmental genetic processes, can significantly and rapidly alter essential behaviors.
This repository contains raw data, scripts, notebooks, and intermediate files that were used to perform and analyze genome-wide association studies, to analyze RNA-seq data, and to process and analyze electrophysiology data presented in the associated publication.
Nicholas W. VanKuren (1), Nathan P. Buerkle (1), Wei Lu, Erica L. Westerman, Alexandria K. Im, Darli Massardo, Laura Southcott, Stephanie E. Palmer, Marcus R. Kronforst
(1) Contributed equally to this manuscript. Contact Nick (nwvankuren@gmail.com; nvankuren@uchicago.edu) or Nathan (nathan.p.buerkle@gmail.com; nathan.buerkle@yale.edu) with questions about the supplied datasets or analysis.
Abstract
This Dryad repository contains raw data, scripts, and notebooks that can recapitulate the key analyses performed in the associated publication and allow further exploration the results. This repository contains three main sections:
- Data, scripts, and a notebook detailing the genome-wide association analyses for forewing color and male mate choice. Data includes:
- Raw forewing color and courtship behavior data from Chamberlain et al. (2009).
- Genome-wide variant calls using whole-genome re-sequencing data from 113 H. cydno alithea males.
- Raw and intermediate analysis results for color and choice genome-wide association tests
- Intermediate results for analyses of linkage disequilibrium and $F_{ST}$ statistics
- The H. c. alithea (yellow) reference genome sequence and gene annotation generated and used in this paper
- Data, scripts, and a notebook detailing the analysis of RNA-sequencing data for H. c. alithea and H. c. galanthus central brain, optic lobe, and retina at seven developmental stages. Data includes:
- Intermediate gene expression data
- Full results from differential expression analyses presented the paper
- Raw and processed electrophysiology data for individual photoreceptors, labeled by species, sex, and individual; scripts for processing those data and reproducing publication figures. This directory was updated on 2026-08-31 to include raw ABF files and additional processing scripts. Check the "Versions" section below and the README files contained within the
electrophysiology.tar.gzdirectory for more information. Data includes:- Raw ABF files from single-cell recordings
- Tuning curve response amplitudes and latencies
- V-Log(I) response amplitudes and latencies
- Tuning curves in the presence of green LED
Versions
-
2026-08-31 Update:
Updated to include raw and processed data and a reproduction pipeline for the electrophysiology figures (Figures 4, 5 and S7 to S10) of VanKuren & Buerkle et al. (2025) PLOS Biology 23(3): e3002989. Dates are ISO (YYYY-MM-DD).
The original Dryad deposit consisted of six summary tables (
UV/blue/green/red/broadband_photoreceptors.csvandwing_reflectance_data.csv) holding per-cell metadata, tuning curves, latencies, V-log(I) values and LED-condition values, with no voltage traces and no code for analyzing them. This deposit is built from the same 508 recordings (UV 180, blue 126, green 149, red 33, broadband 20) and adds the recordings themselves, the code that produces every figure, and per-cell tables that were not previously available.-
Revised Methods/Electrophysiology methods section (above) to accurately reflect our data collection and analysis. These changes are also detailed in the associated updates in the revised
electrophysiology.tar.gzdirectory and below. -
Added raw and processed data files
Additional details on files can be found in the "Description of the data and file structure" section below.
- Per-photoreceptor-type MATLAB v7.3 files
{uv,blue,green,red,broadband}_photoreceptors.mat, one self-contained record per cell holding metadata (species, sex, lambda_max, inhibition label), tuning curves, the V-log(I) intensity series where one was recorded, and, for all types except broadband, the voltage traces. Traces are 6000 samples at 10 kHz. Traces from 2019 onward include a second channel with the shutter TTL and are aligned so the TTL edge lies at sample 2000; earlier traces are single channel and unaligned. A consolidatedled_data.matis included. - Python code to regenerate every figure from the data, driven by
generate_all_figures.py, together withload_published_data.py, which provides the loaders and a response-latency routine that times the depolarizing and hyperpolarizing components separately. - Both kinds of tuning curve, reported separately. The paper uses "sensitivity" for two different quantities: the normalized voltage curve, and the curve obtained by inverting the Naka-Rushton fit. Each
tuning_curvenow reports both, under names that tell them apart.dominant_mVis the response in millivolts andresponse_normalizedis that divided by its peak; both are signed, so long wavelength inhibition appears as a negative tail.sensitivityis the transformed curve andsensitivity_normalizedis that divided by its peak; the transform is undefined for responses at or below zero and floors there, so neither of those two can represent a hyperpolarizing response. The original Dryad deposit published the transformed curve where a V-log(I) series was available and the normalized voltage curve for cells without one, both under a single heading. The transform requires a V-log(I) series. Of the 508 cells, 323 have one and 185 do not. Six of the 323 gave no converged Naka-Rushton fit, leaving 317 cells with a transformed curve, of which 129, 41 percent, contain at least one wavelength at which the response is floored. Thesensitivityfields are set to NaN for the other 191 cells, the 185 with no series plus those six. - The ABF link mirrored into each cell record as
abf_session,abf_cell_numberandabf_match_correlation, so a single MAT file answers where a cell came from. Present for all 488 cells that have traces, including the 65 from the 2017 sessions whose numbering was recovered by waveform matching, and blank for the 20 broadband cells. abf_cell_map.csv, linking each cell to the raw recording it came from, by session and cell number. The mapping was established by matching the deposited traces against the original recordings and is exact for all 488 cells that have traces. Broadband cells have no such linkage.vlogi_series.csv, intensity-response series for the 222 cells whose series was recovered from the session index files: UV 30, blue 85, green 91 and red 16. The original Dryad deposit included these for 151 cells. A V-log(I) series is held for 323 cells in all; the 101 UV cells not in this file are those whose series comes from the published tables rather than from the session files, and they are reachable through the MAT records. Those records embed every series ascell.vlogi, holding the intensities, the responses and a Naka-Rushton fit, for all 323 cells: UV 131, blue 85, green 91 and red 16. Broadband has no intensity series. The Naka-Rushton parameters stored with each series come from two sources, told apart by the sign ofn. For 101 UV cells the values are those fitted for the original Dryad deposit, which reproduce its sensitivity curves. For the other 222 series, which were recovered from the session indices and have no published parameters, the values are a fit made here ofV = Vmax*I^n/(I^n + k^n)withI = 10^(-intensity_log). Six fits that did not converge are set to NaN.glme_results.csv, the fixed-effect coefficients of the generalized linear mixed-effects models the paper reports for Figures 4B, 5I and 5J, with butterfly identity as a random effect. The reproduction scripts for those three figures display the mixed-model value, which is the statistic the paper reports. On Figure 4B the white against yellow H. c. alithea bracket shows the mixed-model value, p = 0.98, which is the figure the paper quotes. On Figure 5I the asterisks mark the pairwise comparisons the caption names, at p < 0.01: white against yellow H. c. alithea, H. c. galanthus against H. pachinus, and H. c. galanthus against the F1 hybrids.ERRATA.txtitem 11 maps each model to the claim it supports and sets out the scope of the Methods sentence describing the binary alternative to the response-amplitude measure. The published p-values are reproduced exactly by the deposited code.lambda_max_fits.csv, rhodopsin-template fits with diagnostics, including the Naka-Rushton parameters used to convert responses to spectral sensitivity and anadoptedcolumn marking which of the fits are the values stored in the MAT files.wavelength_presentation_orders.csvand companion files giving the order in which stimuli were presented.ERRATA.txt, listing points at which the published Methods text does not fully and clearly describe what was done.
- Per-photoreceptor-type MATLAB v7.3 files
-
Explicitly calculated values that differed from the original Dryad deposit
Inhibition labels, sex, latencies and the LED-condition values are unchanged. Two quantities differ, in both cases deliberately.
-
Tuning curves. The original Dryad deposit published one curve per cell: the transformed curve where a V-log(I) series was available and the normalized voltage curve otherwise, both under a single heading. The transform is undefined for responses at or below zero and floors there, so a transformed curve cannot represent a hyperpolarizing response. In the earlier deposit this left 53 of the 76 UV cells labeled as inhibited with curves that never fall below -0.001. This deposit reports the response voltages in millivolts alongside the normalized curves, so that the long wavelength inhibition described in the paper is directly measurable. The same 76 cells reach a median of -0.196 normalized units at 530 nm in the response voltages. Group proportions and every published statistic are unchanged.
-
lambda_max. Values for UV, blue and green cells were refit by converting each cell's responses to spectral sensitivity using its own Naka-Rushton fit and then fitting the standard rhodopsin template, which is the procedure the paper describes. Fitted values track the original Dryad deposit closely. Quartiles, in nm:
type n regenerated original Dryad deposit UV 179 361.67 / 373.26 / 379.49 361.15 / 371.61 / 378.13 blue 126 448.09 / 451.16 / 453.89 447.54 / 451.61 / 455.22 green 149 543.77 / 551.18 / 557.36 541.49 / 548.62 / 555.74 One UV cell has no intensity series, yielded no fit, and is not counted above. Red and broadband are set to NaN, matching the N/A recorded for every red and every broadband cell in the original Dryad deposit. One UV cell, index 148 shows a hyperpolarizing offset that exceeds its depolarization at every wavelength; its tuning curve holds the depolarizing component, as described below. Fits are regenerated by
code/fit_lambda_max.py.Figure 4B is the one figure that does not use these refits. It reads
lambda_maxfromdata/dryad_csvs/UV_photoreceptors.csvso that the panel reproduces the published values rather than the refit. The refit runs between 1.11 and 2.03 nm above the published value on the six groups of males, and the cell counts are identical, 43, 40, 18, 19, 8 and 30 for those groups and 22 females, matching the published caption.
-
-
Added an explanation for the tuning curve of UV cell 148
dominant_mVholds, per wavelength, whichever of the depolarizing and hyperpolarizing components has the larger magnitude, with its sign preserved. UV cell 148 shows a hyperpolarizing offset of roughly constant amplitude, between -9.6 and -11.9 mV, at every one of the 38 wavelengths, which exceeds its depolarization across the whole spectrum. For that cell the tuning curve holds the depolarizing component instead, which is spectrally tuned and peaks at 9.26 mV at 340 nm.depol_mVandhyperpol_mVare unchanged, so the larger-magnitude value can be recomputed per wavelength by anyone who wants it. This is the only cell in the deposit that meets the condition. Thesensitivityandresponse_normalizedcurves for that cell follow from the same component. -
Added functions to reproduce Figure 5A
The two example cells are those in the published panel: cell 10, trial 0, from session
aliWM_03-Oct-2019, and cell 39, trial 0, fromaliWM_07-Oct-2019, both white H. c. alithea males. The published panel labels them UV Cell 1 and UV Cell 2. -
Added functions to reproduce Figure 4A
- The dotted reference curves are read from
data/fig4A_published_templates.csv, which holds the UV1 and UV2 curves as they are drawn in the published panel, from 310 to 450 nm at 1 nm, each normalized to a peak of 1. The values were measured from the published figure. - The measured curves are the mean and SEM of the tuning curve column of
data/dryad_csvs/UV_photoreceptors.csv, over the same 83 H. c. alithea males and 22 females as the published caption. That column holds a mixture of V-log(I) transformed sensitivity and normalized voltage across cells, as described above. The response voltages held in the MAT files are shown in Figure S7.
- The dotted reference curves are read from
-
Added functions to reproduce statistical tests in the figures
Each figure script computes the test its published caption names, and no other.
- Figure 4B. Drawn from the published
lambda_maxvalues. Asterisks below mark a significant difference from the expected tuning of both UV1 and UV2, by one-sample t-test against each template with Bonferroni correction. The white against yellow H. c. alithea bracket shows the pairwise mixed-model value. - Figure 5H. Asterisks above mark a significant change from before the LED, by one-sample t-test of each group against zero. The between-group comparison is a two-sample t-test. This reproduces the values in the text: -5.6 +/- 1.1 mV with p < 0.001 for cells with hyperpolarizing responses, and -1.4 +/- 0.8 mV with p = 0.10 for those without.
- Figures 5I and 5J. Asterisks mark pairwise mixed-model differences between groups at p < 0.01.
- Figure 4B. Drawn from the published
-
Clarified conventions
- Attenuation is given in log units, 0 being the brightest.
- Latencies are relative to light onset, taken as the TTL edge plus an 11.9 ms mechanical shutter delay, and can be measured only for cells recorded with a TTL channel.
- Every data file has a companion section in
data/README.md.
-
-
2024-12-09 Update:
- Updated title to reflect final title.
- Added a new directory,
electrophysiology.zip, containing raw data from electrophysiology experiments and wing spectral reflectance data. Updated README to describe new files. - Updated Methods section to describe electrophysiology data collection
-
2024-10-18 Update:
- Updated title to reflect order of paper results.
- Updated Methods section of this repository to add information of how data required for analyses described in the
gwasdirectory were generated. - Minor updates to initial
rnaseqsubmission, including: minor text edits innotebook.Rmdfor clarity; the addition of an updated filedata/GenesInOtherPrefPeaks.50kb.2024-10-10.txtcontaining a list of genes found near genome-wide association (GWA) peaks on chromosomes 7, 9, and 11. - Relocated top-level genome and genome annotation files into
gwas/info/genomedirectory. - Added a new
gwasdirectory containing data, scripts, and an R notebook required for running the GWA analyses presented in the associated publication, plus additional QC steps that were not presented in the publication but are important for understanding our final analyses. This README has been updated to reflect this addition and describes each of those files below. Thegwas/notebook.RmdR notebook contains additional information and will knit properly after installation of the required R packages.
Description of the data and file structure
Description of data and files within the gwas directory:
The most important files in this directory are the notebook.Rmd and the gwas_notebook.Rproj files. These two files can together be used to re-run analyses presented in the paper, contain much of the detail and reasoning behind each analysis, and link all of the data and scripts described below into a single cohesive story. Please start there.
gwas.tar.gz
gwas_notebook.Rproj: R project file for loading into R and RStudio. In conjunction withnotebook.Rmd, can be used to re-run analyses presented in the associated paper and to run new analyses of interest to end user.notebook.Rmd: R markdown file containing detailed notes, code chunks, and additional data processing steps that can be used to recapitulate the paper results and allow exploration of the results further.expected_notebook.html: output from knittingnotebook.Rmdbefore dryad submission. End users may simply browse this notebook or knit the project fresh.- cluster_scripts/
PreprocessReads.sh: a shell script for SLURM that can be used to perform quality control and mapping of whole-genome re-sequencing data for the samples found in BioProject PRJNA802836RunHaplotypeCaller.sh: a shell script SLURM that can be used to perform the first step of calling genome-wide variation in the alignment files generated byPreprocessReads.sh. This script depends on the GenomeAnalysisToolKit v4.2 and the HaplotypeCaller module.RunGenotypeGvcfs.sh: a shell script for SLURM that can be used to perform the second step of calling genome-wide variation using the output fromRunHaplotypeCaller.sh. This script depends on the GenomeAnalysisToolKit v4.2.RunGemmaFwcGwa.sh: a shell script for SLURM that can be used to perform the genome-wide association for male forewing color (fwc) using the variant callset found indata/plink/heliconius_cydno_alithea_yellow.variants.20230712.pruned...RunGemmaLmpGwa.sh: a shell script for SLURM that can be used to perform the genome-wide association for male lifetime mate preference (lmp) using the variant callset found indata/plink/heliconius_cydno_alithea_yellow.variants.20230712.pruned...RunGmmatChoiceWald.R: an R script that will perform the genome-wide association for choice using GMMAT 1.4.2, the variant callset indata/plink/heliconius_cydno_alithea_yellow.variants.20230712.pruned...and the raw phenotype and choice data indata/phenotype_data/MalePhenotypeData.20190306.txtanddata/phenotype_data/CourtsForR.20190506.EXPANDED.csv.RunGmmatChoiceWald.sh: a shell script for SLURM that wrapsRunGmmatChoiceWald.R.RunGmmatFwcWald.R: an R script that will perform the genome-wide association for male forewing color (fwc) using GMMAT 1.4.2, the variant callset indata/plink/heliconius_cydno_alithea_yellow.variants.20230712.pruned...and the raw phenotype data indata/phenotype_data/MalePhenotypeData.20190306.txt.RunGmmatFwcWald.sh: a shell script for SLURM that wrapsRunGmmatFwcWald.R.
- current_cache/: an empty directory to contain cached results from knitting the R notebook
./notebook.Rmd - data/
- fst/
heliconius_cydno_alithea_yellow.variants.20230712.pruned.10k2k.windowed.weir.fst.gz: gzipped text file containing $F_{ST}$ calculations in 10 kb sliding windows (2 kb step) between yellow and white males. Calculated using vcftools 0.16 and the variant calls indata/plink/heliconius_cydno_alithea_yellow.variants.20230712.pruned...
- gwas/
choice.grm_only.20240923.out.txt.gz: gzipped text file containing the genome-wide association results for male mate choice including only the genetic relatedness matrix (grm) as a random effect.choice.grm_stock.20240925.out.txt.gz: gzipped text file containing the genome-wide association results for male mate choice including the genetic relatedness matrix (grm) and principal component 2 (pc2, or stock) as random effects.forewing_color.cXX.txt: the genetic relatedness matrix calculated using GEMMA 0.98.5 and the variant callset indata/plink/heliconius_cydno_alithea_yellow.variants.20230712.pruned...forewing_color.grm_only.assoc.txt.gz: gzipped text file containing the genome-wide association results for male forewing color including only the genetic relatedness matrix as a random effect.forewing_color.grm_pc2.assoc.txt.gz: gzipped text file containing the genome-wide association results for male forewing color including the genetic relatedness matrix and principal component 2 (pc2, or stock) as random effects.forewing_color.grm_pcs1-3.assoc.txt.gz: gzipped text file containing the genome-wide association results for male forewing color including the genetic relatedness matrix (grm) and principal components 1-3 as random effects.klocus.court_num.20240926.out.txt.gz: gzipped text file containing the association results for male mate choice in the K locus (chr1:14.5Mb-16.5Mb) including the genetic relatedness matrix (grm) a random effect and court number as an additional fixed effect.klocus.male_fwc.20240926.out.txt.gz: gzipped text file containing the association results for male mate choice in the K locus (chr1:14.5Mb-16.5Mb) including the genetic relatedness matrix (grm) a random effect and male forewing color as an additional fixed effect.preference_all.grm_only.assoc.txt.gz: gzipped text file containing the genome-wide association results for male lifetime preference (estimated using all courts) and including only the genetic relatedness matrix as a random effect.
- ld/
K_locus_LD.lt10kb.ld.gz: gzipped text file containing pairwise linkage disequilibrium (LD) estimates for all pairs of K locus variants less than 10 kb apart.LdEstimates.100Mb.240905.txt: text file containing summaries of LD values for 600 million random pairs of variants from across the genome.snp_ld_values: text file containing pairwise LD estimates for pairs of top forewing color and male mate choice variants identified using genome-wide association.
- plink/
heliconius_cydno_alithea_yellow.variants.20230712.pruned.[bed|bim|fam|nosex]: plink bfile set containing filtered variant calls for all 113 males in the final dataset. This was the callset used for all genome-wide association analyses.heliconius_cydno_alithea_yellow.variants.20230712.pruned.eigenv[ec|al]: text files containing principal components (PC) analysis results for the first 20 PCs. Calculated using PLINK 1.90 and the plink bfile set in this directory.heliconius_cydno_alithea_yellow.variants.20230712.pruned.forewing_color.fam: plink fam file containing the male forewing color information.
- susie/
SusieData.20241003.Rdata: R data file containing two objects used for the SuSiE analysis described in the publication and the notebook.
- fst/
- info/
- genome/
heliconius_cydno_alithea.yellow.fa.gz: bgzipped FASTA format file containing the yellow Heliconius cydno alithea genome sequence.heliconius_cydno_alithea.yellow.agp: text file containing information linkingheliconius_cydno_alithea.yellow.fascaffolds to the Heliconius melpomene v2.5 genome assembly. Generated using RagTag and subsequent massaging withawk.heliconius_cydno_alithea.yellow.genome: text file containingheliconius_cydno_alithea.yellow.fascaffold names and lengths.heliconius_cydno_alithea.yellow.decorated.modified.gff3.gz: gzipped generic feature format v3 (GFF3) file containing gene annotation information for theheliconius_cydno_alithea.yellow.fagenome sequence.
- phenotype_data/
CourtsForR.20190506.csv: csv file containing raw courtship data from Chamberlain et al. (2009)CourtsForR.20190506.EXPANDED.csv: csv file containing raw courtship data from Chamberlain et al. (2009) EXPANDED to include a single courtship event per row.GenotypePhenotypeCourtshipDataForR.20190620.txt: tab-delimited file containing genotype and courtship data for males studied by Chamberlain et al. (2009)MalePhenotypeData.20190306.txt: tab-delimited file containing male wing color pattern information from Chamberlain et al. (2009)
- sequencing_qc/
Raw-Alithea-Data_multiqc_report[.html|_data.zip]: html file and associated data summarizing the quality of the raw whole-genome re-sequencing data using FastQC and MultiQC. Data can be downloaded from NCBI BioProject PRJNA802836.Trimmed-Alithea-Data_multiqc_report[.html|_data.zip]: html file and associated data summarizing the quality of the processed whole-genome re-sequencing data using FastQC and MultiQC. Data can be downloaded from NCBI BioProject PRJNA802836 and processed usingcluster_scripts/PreprocesReads.sh.SequencingQcAndMappingForR.20190620.txt: text file containing summary data for re-sequenced samples.
- plots/: empty directory for holding plots generated by knitting the
notebook.Rmdfile in RStudio.
- genome/
- scripts/
RunGmmatScore.R: R script to run the genome-wide assocation analysis for male mate choice using GMMAT and the score test.functions_for_gwa.R: R script containing useful functions for loading data, plotting, and massaging data.
Description of data and files within the rnaseq directory:
The most important files in this directory are the notebook.Rmd and the rnaseq.Rproj files. These two files can together be used to re-run analyses presented in the paper, contain much of the detail and reasoning behind each analysis, and link all of the data and scripts described below into a single cohesive story. Please start there.
rnaseq.tar.gz
rnaseq.Rproj: R project file for loading into RStudionotebook.Rmd: R markdown notebook containing detailed notes, pipelines, and code chunks for recapitulating the published results and to allow further independent exploration by the end user.- data/
AllGeneFunctionalAnnotations.2023-04-04.csv.gz:GenesInKlocus.2023-05-23.txt: A text file containing a list of genes within the K locus (Hcay201001o:14500000-16500000)GenesInOtherPrefPeaks.50kb.2024-10-10.txt: A text file containing a list of genes within 50 kb of the top GWA peaks on chromosomes 7, 9, and 11.heliconius_cydno_alithea_deseq_results.Rdata: R data file containing the results from all stage-specific differential expression analyses used in the publication. This is a list of tibbles,deseq_results, where each tibble contains the full results from a single stage-specific run of DESeq2. This can be used to analyze stage-specific DE results for any gene.helicoinius_cydno_alithea.yellow.eggnog.csv.gz: A gzipped CSV file containing the results from running eggNOG'semapperutility on the full yellow Heliconius cydno alithea protein annotation set. This contains information of putative orthologs and functions for each gene.heliconius_cydno_data.Rdata: An Rdata file containing four objects used to run the publication analyses.tx2gene: a 2-column tibble containing transcript-to-gene mappingsample_info: a tibble containing RNA-seq sample informationinitial_dds: a DESeq2 data object containing unfiltered gene quantification data for each sample insample_info. Values were loaded from raw salmon output for each sample usingtximportpackage.filtered_dds: a DESeq2 data object containing filtered gene quantification data for the final set of 260 samples included in the publication analyses. This is theinitial_ddsobject filtered for genes with mean normalized expression values >50 and for non-outlier samples.
heliconius_cydno_DEGs.ym_v_wm.gFDR_0.01.Rdata: An Rdata file containing a list of vectors of DE genes,DEGs_list, found in each relevant DESeq2 and maSigPro comparison. This isdeseq_resultsfiltered to keep only genes with global FDR <= 0.01 for each comparison, plus genes found to be DE bymaSigPro. See the notebook for details on how these vectors were generated.heliconius_cydno_masigpro_results.Rdata: An Rdata file containing the results frommaSigProruns from each tissue. This file contains list objects for each tissue (central brain, optic lobe, and retina) with the rawmaSigProresults. You can extract significant genes usingmaSigPro::get.siggenes().heliconius_cydno_wgcna_objects.Rdata: An Rdata file containing the objects required for running and generated by WGCNA with thefiltered_ddsandsample_infoinformation. This file contains:datExpr: expression data, generated fromDESeq2::counts(filtered_dds, norm = T)datTraits: trait data, derived fromsample_infodynamicMEs: gene co-expression module eigenvectors (summaries of gene expression for all genes within that module), for dynamically pruned modules.dynamicModuleColors: vector containing module colors for each gene included indatExpr. These are the module assignments given to each gene by running WGCNA.dynamicModuleLabels: vector containing module labels (numbers) for each gene included indatExpr. These are the module assignments given to each gene by running WGCNA.gene_tree: hierarchical clustering object (fromhclust) describing the relationships of all genes indatExpr. You can plot usingbase::plot().METree: hierarchical clustering object (fromhclust) describing the relationships of all co-expressed gene modules, based on the eigenvectors contained indynamicMEs. You can visualize usingbase::plot
- plots/publication_plots/rPCA outlier identification/: directory containing the rPCA outlier plots that we relied on for the publication's filtering and analysis steps. These may differ from the analogous plots generated by the notebook because of random seeding. Files are labeled
9-OutlierId.all_{stage}_{tissue}.outliers.png. Where stage and tissue are described in the notebook. - results/module_GOs/
- go_enrichment/: directory containing
topGOgene ontology (GO) enrichment results in CSV format for each co-expressed gene module identified in the publication analyses. Module colors match those in thedynamicModuleColorsvector. - go_figure/: directory containing plots generated using
GO-figure!, the results from WGCNA, and the gene annotations held inheliconius_cydno_alithea.yellow.eggnog.csv.gz. The results for each invocation are found in independent directories. Thetopgo_filesdirectory contains the properly formatted input files, derived from the eggNOG annotations. - graphs/: empty directory to contain output from
topGOruns produced during knitting.
- go_enrichment/: directory containing
- scripts/:
heliconius_RNAseq_functions.R: R script file containing custom functions that I used to produce plots, massage data, etc.modified_masigpro_functions.R: R script file containingmaSigProfunctions that have been modified to produce more useable/aesthetically pleasing output. These supersede functions in the nativemaSigPropackage when knitting this notebook.
Description of data and files within the electrophysiology directory:
electrophysiology.tar.gz
CHANGELOG.md: Description of changes made between the 2024-12-09 and 2026-08-31 updates.ERRATA.txt: Points at which the published Methods text does not fully and clearly describe what was done, with the correct statement and how it was established in each case. None of them alters the results presented or the conclusions drawn in the published version of the paper.README.md: Overview of and directions for using the data and scripts contained within the electrophysiology directory.requirements.txt: List of required python packages for running scripts to recapitulate figures.- code/: directory containing python scripts to access and process raw electrophysiology data and to generate publication figures. Instructions for using each script are found in the top level
README.mdfile.figure_vlogi_other_types.py: Python3 script to plot V-log(I) (intensity-response) for blue / green / red photoreceptors, recovered from the per-session index files (vlogiData) bundled with the raw ABFs. Companion to Figure S9 (UV).figure4A_spectral_sensitivity.py: Python3 script to reproduce Fig4A displaying UV photoreceptor spectral sensitivity of H. c. alithea males vs all females.figure4B_lambda_max_preference.py: Python3 script to reproduce Fig4B showing UV photoreceptor lambda_max by species.figure5A_example_traces.py: Python3 script to reproduce Fig5A showing example photoreceptor voltage traces.figure5B_UV_tuning.py: Python3 script to reproduce Fig5B showing mean tuning curves for UV cells with and without inhibition.figure5C_UV_latency.py: Python3 script to reproduce Fig5C showing UV photoreceptor response latency vs wavelength, for cells WITH (n=76) vs WITHOUT (n=104) long-wavelength hyperpolarizing responses (the groups of Fig 5B).figure5D_blue_tuning.py: Python3 script to reproduce Fig5D showing blue cell tuning curves.figure5E_blue_latency.py: Python3 script to reproduce Fig5E showing blue cell latency.figure5F_green_tuning_LED.py: Python3 script to reproduce Fig5F showing green cell tuning curves with and without green LED background.figure5G_UV_tuning_LED.py: Python3 script to reproduce Fig5G showing UV photoreceptor tuning curves Before vs During the green LED background.figure5H_UV_LED_lambda_max_Vrest.py: Python3 script to reproduce Fig5H showing the effects of green LED effects on UV cell max response and resting potential.figure5I_UV_proportion_inhibited.py: Python3 script to reproduce Fig5I showing the proportion of UV photoreceptors with LW inhibition by species.figure5J_blue_proportion_inhibited.py: Python3 script to reproduce Fig5J showing the proportion of blue photoreceptors with LW inhibition by species.figureS10_temporal_responses.py: Python3 script to reproduce FigS10 showing photoreceptor temporal responses.figureS7_photoreceptor_tuning.py: Python3 script to reproduce FigS7 showing photoreceptor sensitivities.figureS8_lambda_max_distributions.py: Python3 script to reproduce FigS8 showing lambda max values for each photoreceptor type in each group.figureS9_v_log_i_comprehensive.py: Python3 script to regenerate FigS9 displaying V-log(I) intensity-response and response latency vs intensity.fit_lambda_max.py: Python3 script to regenerate data/lambda_max_fits.csv from the deposited data.generate_all_figures.py: Python3 script to generate ALL reproduced electrophysiology figures.load_published_data.py: Python3 script containing helper functions to load data from published MAT files.
- data/: directory containing raw and processed electrophysiology data files.
README.md: File containing information on directory contents.- abf/: directory containing raw recordings from each session, 90 tarballs in total. Each tarball holds the ABF files for every cell and wavelength recorded in that session.
manifest.csv: Parts list describing contents of each tarball{session}.tar.gz: tarballs containing raw data, named by recording session, for examplealiWM_03-Oct-2019.tar.gz. Extract usingtar -xzf ...
abf_cell_map.csv: One row per cell givingabf_sessionandabf_cell_number, identifying the raw recording the traces came from.- dryad_csvs/: directory containing the six per-cell summary tables released with the 2024-12-09 version of this deposit, holding metadata, tuning curves, latencies, V-log(I) values and LED-condition values for each photoreceptor type. Retained so that the published values remain available alongside the rebuilt records.
fig4A_published_templates.csv: The UV1 and UV2 reference curves as drawn in the published Figure 4A, from 310 to 450 nm at 1 nm, each normalized to a peak of 1. Read byfigure4A_spectral_sensitivity.py.*.matfiles: MATLAB struct arrays with one entry per cell, separated by cell type. These files can be read and analyzed using MATLAB and procedures described in the README.md file.led_data.matholds the LED-condition measurements consolidated across cell types: tuning curves and V-log(I) series recorded before and during the green adapting LED, and the accompanying resting potentials.lambda_max_fits.csv: Rhodopsin-template fits for the 455 UV, blue and green cells, withfit_r2, the source of the V-log(I) used, and the Naka-Rushton parameters.glme_results.csv: Fixed-effect coefficients of the generalized linear mixed-effects models the paper reports for Figures 4B, 5I and 5J. Each model has the formresponse ~ 1 + effect + (1 | subject), with butterfly identity as the random effect so that several cells from one animal are not treated as independent, fitted in MATLAB withfitglmeby maximum pseudo-likelihood and, for the binary inhibition classification, a binomial distribution with a logit link.vlogi_series.csv: Intensity-response series, one row per cell and intensity level, with columnsintensity_log(log attenuation, 0 brightest),response_mV,wavelength_nmandled.uv_vlogi.csv/uv_vlogi_led.csv: UV V-log(I) intensity series, including inhibitory-wavelength responses and per-intensity latency. Used for Figure S9.uv_led_resting_potential.csv/uv_led_tuning.csv: Files containing UV cell measurements in the presence of a green LED.green_led_tuning_updated.csv: File containing green cell tuning in the presence and absence of LED.vlogi_blue_green_red_broadband_README.md: README describing the contents and usage of the subsequentvlogi_blue_green_red_broadband.csvfile.vlogi_blue_green_red_broadband.csv: Blue, green and red V-log(I) series, for 107, 104 and 9 cells respectively, plus 14 further cells whose type assignment is uncertain and is marked as such. Used byfigure_vlogi_other_types.py. There is no broadband V-log(I). See its_README.md.vlogi_latency_blue_green.csv: Blue/Green V-log(I) latency-vs-intensity (Fig S9 Panel B).wavelength_presentation_orders_README.md: README describing the contents and usage of the subsequentwavelength_*csvfiles.wavelength_presentation_orders.csv: The seven fixed wavelength presentation orders used study-wide,Order_AtoOrder_G, one column per sequence (play_position by order). See its_README.md.wavelength_order_by_session.csv: Orders of stimulus presentation used in each recording session.wavelength_order_by_cell.csv: Orders of stimulus presentation for each cell.led_data.mat,*_led_*.csv: LED-condition tuning / V-log(I) / resting-potential data.
- figures/: Directory containing the output from running
electrophysiology/code/generate_all_figures.py.all_plots.pdfcontains all plots in PDF format. Additional files in PNG or PDF format were generated using the matching scripts in the code/ directory.
Sharing/Access information
Raw whole genome sequencing data can be downloaded from the NCBI Short Read Archive through BioProject PRJNA802836.
Raw RNA-sequencing data can be downloaded from the NCBI SRA through BioProject PRJNA1019262.
Code/Software
R notebooks
All R work was performed in RStudio 2024.04.1+748 and R version 4.4.
R notebooks contained in the gwas and rnaseq directories contain all information needed to run and should install required packages upon first execution. The expected_notebook.html files contain the expected results from simply opening the notebooks in RStudio and knitting using knitr. Packages and version numbers are contained in those html files via sessionInfo().
All Rcode contained within the gwas and rnaseq directories should be self-contained and able to run on standard system setups. NWV executed R notebooks on a 2015 MacBook Pro with 16Gb RAM and 2.5GHz i7 processor running Monterey 12.7.5. W Lu executed on a Windows machine with 16Gb RAM, 2.4GHz i7 processor and running Windows 10.
R notebooks contain additional commands that we used to run standalone programs on a compute cluster or on the UNIX command line. These are contained within their own chunks within those notebooks. These chunks were used to produce many of the intermediate results files found in data, and the input and output to those commands is written relative to the respective directory.
Python scripts
All electrophysiology processing and figure code is Python 3 and is contained in the electrophysiology/code directory. Required packages are listed in electrophysiology/requirements.txt: numpy 1.20 or later, scipy 1.7, matplotlib 3.4, h5py 3.0 and pandas 1.3. These can be installed with pip install -r requirements.txt.
To regenerate every figure, run the following from the electrophysiology directory:
python3 code/generate_all_figures.py
This writes 17 figures to figures/, each as a 300 dpi PNG and a vector PDF, together with figures/all_plots.pdf holding all of them. Individual panels can be produced by running the corresponding script in code/ the same way.
The scripts read the deposited .mat files directly using h5py, since MATLAB v7.3 files are HDF5, so no MATLAB license is required to use the data or to reproduce the figures. The same files can also be opened in MATLAB directly. The generalized linear mixed-effects models the paper reports were fitted in MATLAB with fitglme; their coefficients are deposited in data/glme_results.csv and are read from that file rather than refitted.
SEP executed the electrophysiology scripts on a 2023 MacBook Pro with 16Gb RAM and an Apple M2 Pro processor running Ventura 13.5.1, using Python 3.14.3.
SLURM scripts
It is likely that users will need to edit the SLURM directives in any of the cluster_scripts scripts for their particular setups, in particular the account and the module loading steps.
Additional programs
Animals
We used butterflies from four different taxa. The H. c. alithea used in the preference and color GWA analyses were previously tested for courtship behavior in Ecuador in 2008 by Nicola Chamberlain and Durrell Kapan. These butterflies were tested for their preference, then the bodies stored in 100% ethanol at -80oC until genomic DNA extractions (see below) [1]. For all other experiments, butterflies were housed in greenhouse breeding colonies at the University of Chicago that were regularly supplemented with new individuals. Adults were fed Bird’s Choice artificial nectar ad libitum and supplied with blooming Lantana as an additional source of nectar and pollen. Heliconius cydno galanthus and H. melpomene pupae were obtained from El Bosque Nuevo in Costa Rica, and H. c. alithea from Heliconius Butterfly Works in Ecuador. Heliconius pachinus and F1 H. c. galanthus X H. pachinus hybrids were bred in Panama and adults were transported to Chicago for experiments. Collection, rearing, import and export were done under permits from Ecuador, Panama, Costa Rica, and USA.
Heliconius cydno alithea (yellow) genome assembly and annotation
We isolated DNA from thorax of a single adult yellow H. cydno alithea female using the QIAGEN Genomic-tip 20/G following the manufacturer’s instructions with the following modifications: tissue was incubated at 50oC shaking at 800 rpm overnight in lysis buffer. We used 4 ug of this high molecular weight DNA as input to Oxford Nanopore Technologies (ONT) ligation library preparation kit SQK-LSK 110. We prepared libraries following the manufacturer’s instructions with modifications based on the protocol found here: https://www.protocols.io/view/dna-extraction-and-nanopore-library-prep-from-15-3-bp2l6n3kzgqe/v1. This protocol differs from the manufacturer’s protocols in the following ways. End-repair was performed at 20oC for 1 hour, dA-tailing was performed for 30 minutes, ligation was performed for 1 hour at room temperature, and all bead elution steps were allowed to proceed for one hour at room temperature. We also used PacBio SRE XS kit to remove <10kb fragments in the final libraries.
Final libraries were sequenced on an ONT MinION with version 9.4.1 flow cell. We performed basecalling using Guppy and the super accurate basecalling model in dna_r9.4.1_450bps_sup.cfg supplied with the basecaller. For the genome assembly, we adopted a similar strategy as (Steward et al. 2021). We generated the initial draft assembly using Flye 2.9 [2] with estimated genome size of 282Mb (based on GenomeScope estimate https://github.com/schatzlab/genomescope) and Shasta 0.10.0 (https://github.com/chanzuckerberg/shasta) with default parameters. The Flye assembly and Shasta assembly were polished with two rounds of racon 1.5.0 (https://github.com/isovic/racon) and one round of medaka 1.8.1 with ONT reads, and then purged to remove duplicate scaffolds (typically uncollapsed allelic variation) using purge_dups (https://github.com/dfguan/purge_dups). Finally, the duplicate scaffolds were merged together with quickmerge (https://github.com/mahulchak/quickmerge) and purged using purge_dups.
To simplify comparisons across species, we scaffolded H. c. alithea contigs to the Heliconius melpomene v2.5 chromosome-level assembly using RagTag [3] and renamed H. c. alithea scaffolds to match. Finally, we identified and soft-masked repeat sequences using RepeatModeler and RepeatMasker [4,5]. The genome sequence and annotation used in this study can be found in this repository z8w9ghxjz in the gwas/data/genome/ directory. The final genome assembly comprised 310 scaffolds spanning 294 Mb, with 287 Mb assigned to H. melpomene chromosomes. BUSCO v5 analysis showed the H. c. alithea genome contained 97.7% complete (97.3% single-copy, 0.4% duplicated), 0.4% fragmented, and 1.9% missing OrthoDB v10 Endopteryogota (2,124 single-copy orthologs) SCOs.
We annotated H. c. alithea scaffolds using EvidenceModeler 1.1.1 [6]. We first assembled the H. cydno transcriptome de novo using RNA-seq data generated by Walters et al. [7], Nallu et al. [8], and Rossi et al. [9] using Trinity v2.10.0 [10]. RNA-seq data was also mapped to using STAR 2.6.1d [11], and the resulting alignments used to generate genome-guided assemblies using Trinity and StringTie 1.3.1 [12]. We combined de novo and genome-guided assemblies using PASA [13]. Evidence for protein-coding regions came from mapping the UniProt/Swiss-Prot (2020_06) database and all Papilionoidea proteins available in NCBI’s GenBank nr protein database (downloaded 6/2020) using exonerate [14]. We identified high-quality multi-exon protein-coding PASA transcripts using TransDecoder (transdecoder.github.io), then used these models to train and run Genemark-ET 4 [15] and GlimmerHMM 3.0.4 [16]. We also predicted gene models using Augustus 3.3.2 [17], the supplied heliconius_melpomene1 parameter set, and hints derived from RNA-seq and protein mapping above. Augustus predictions with >90% of their length covered by hints were considered high-quality models. Transcript, protein, and ab initio data were integrated using EVM with the weights in table S8.
Raw EVM models were then updated twice using PASA to add UTRs and identify alternative transcripts. BUSCO v5 analysis of the final annotated protein set showed it contained 94.8% complete, 1.8% fragmented, and 3.4% missing OrthoDB v10 endopteryogta SCOs (n = 2124). Gene models derived from transposable element proteins were identified using BLASTp and removed from the annotation set. Functional annotations were applied to this annotation set using eggNOG mapper v5 [18]. The final annotation comprises 18,763 protein-coding genes and 30,325 transcripts. We identified 1:1 orthologs to Drosophila melanogaster proteins using reciprocal BLASTp, assigning orthologs only to those genes where the top hit was identical between the two directions (i.e. Hca → Dmel AND Dmel → Hca). Gene annotations, eggNOG results, and Drosophila orthologs are supplied in this repository z8w9ghxjz.
Heliconius cydno alithea genome re-sequencing and variant calling
Genomic DNA used for calling variants was isolated from thorax of 113 H. c. alithea males studied by Chamberlain et al. [1] using chloroform extractions. These individuals were assessed for their mate preference in 2008, then stored in 100% ethanol at -80oC until gDNA extractions in 2015 - 2019. We re-sequenced all individuals with multiple courts, plus a number of males with just a single court, that produced high-quality genomic DNA, yielding a subset of 113 males from the original 175 included in the original study. Illumina paired-end libraries were constructed using the KAPA Hyper Prep Kit (KAPA Biosystems) or Nextera Library Prep Kit and sequenced to ~15X using 2x100 bp on an Illumina HiSeq2500 or 4000 at the University of Chicago Functional Genomics Facility. Raw data can be found in NCBI BioProject PRJNA802836.
Low-quality regions and adapters were trimmed from raw reads using Trimmomatic before mapping to the H. c. alithea reference using bowtie2 v2.3.2 with default settings except --very-sensitive-local [19]. We then marked PCR duplicate reads with Picard and realigned around putative indels using the Genome Analysis Toolkit (GATK) 4.2 [20,21]. SNP and indel calling was performed using the HaplotypeCaller and GenotypeGVCFs module in GATK 4.3.0 with the heterozygosity priors set to 0.01 for both SNPs and indels. Scripts and variant calls in PLINK bed/bim/fam format can be found in this repository in gwas/data/plink.
RNA-sequencing data
We aimed to collect RNA-sequencing data from retina, optic lobe, and brain tissue at seven developmental stages in H. c. galanthus, white H. c. alithea, and yellow H. c. alithea males and females in triplicate. We used controlled crosses between H. c. alithea males and females that were homozygous for the top wing color variant, thus ensuring that larvae and pupae from each cross would (if they were allowed to emerge) develop a single wing color. We identified appropriate adults for crosses by clipping a single leg from each individual that emerged from each shipment, extracting DNA from that leg using DNA ExtractALL reagents (Thermo), then performing a custom TaqMan genotyping assay for the wing color variant using the leg DNA. Only males and females that were homozygous for the yellow or white allele were used to set up “yellow” or “white” crosses. All H. c. galanthus individuals were used in H. c. galanthus crosses. We set up crosses between multiple males and females in the UChicago greenhouse and provided ample host plants for egg lay. Caterpillars and pupae were maintained in separate small cages for each cross, and individuals were labeled upon pupation to track developmental timing. We collected tissues from one larval stage (final instar purple crawler, ~36h before pupation), five pupal stages (p0: 12 - 24 hours after pupation, p2: 48 - 60 hap, p4: 96 - 108 hap, p6: 144-156 hap, and p7: 168-180 hap), and one adult stage (ad: 24-48 hours after emergence). Pupal sex was determined using external pupal characteristics (https://www.ucl.ac.uk/taxome/jim/Mim2/heliconius_pupa_sex_difference.html) as well as the presence/absence of testis, which are very prominent in butterflies.
We collected head tissue from purple crawler and p0 pupae because the main neural tissues are small and difficult to separate. We collected retina, optic lobe, and central brain separately for all remaining stages. We dissected individuals in cold PBS and immediately placed dissected tissues into RNAlater (Ambion, USA). Tissues were stored in RNAlater at -80oC until RNA extraction using TRIzol (Ambion, USA). High quality (RIN > 7) RNA samples were treated with Turbo DNAse (Invitrogen, USA), then 1 ug was used as input for poly-A selection and RNA-seq library preparation using the NEBNext Poly(A) mRNA Magnetic Isolation Module and NEBNext UltraII Directional RNA Prep Kit following the manufacturer’s instructions with minor modifications. RNA fragmentation was performed for 10 min at 94oC. We used the NEBNext Multiplex Oligos for Illumina dual-index adapters to uniquely barcode each sample. Double-sided selection was performed after adapter ligation to enrich for ~300 bp - 500 bp fragments. Final libraries were PCR amplified for 11 cycles. RNA-seq libraries were pooled and sequenced 2x100 bp on a NovaSeq 6000 at the University of Chicago Functional Genomics Facility.
All raw RNA-seq data downloaded from NCBI BioProject PRJNA1019262.
Preliminary processing of RNA-seq data
We quantified gene expression in each sample using the raw reads, the yellow H. c. alithea transcriptome, and salmon v1.9.0 [31]. The whole genome sequence was included as the decoy, and sequence composition, GC, and positional bias corrections were used during quantification. Indexes and quantification used k-mer size 31. Quantifications, scripts for analysis, and other data objects can be found in this repository in the rnaseq/ directory.
Electrophysiology methods
For in vivo recordings, butterflies at least 3 days old were restrained in a custom built collar with heated beeswax. A small hole was cut in the dorsal eye to allow for electrode penetration along the dorsal-ventral axis of the eye and covered with silicone grease to prevent desiccation. A second small hole was cut near the mouthparts and a silver-chloride reference electrode was placed into the anterior portion of the head. The butterfly was then placed on a stage with the eye at the center of a Cardan arm perimeter device to allow for equivalent light stimulation at any spatial location.
PR responses were evoked using monochromatic stimuli from 310 to 700 nm in 10 nm increments (S12 Fig). Wavelengths above 630 nm were excluded from analysis because the output at those settings was not monochromatic, and the 580 and 660 nm settings were excluded because their intensity was at least an order of magnitude higher than the rest and could not be equalized with the neutral density filter. Thirty-eight wavelengths remain and the analyzed range is 310 to 630 nm. The light source was a dual Halogen-Deuterium lamp (DH-2000s, Ocean Optics), which was connected to a scanning monochromator (Monoscan-2000, Ocean Optics). Stimulus timing was controlled with an optical shutter (OZ Optics) and focused onto the butterfly eye using a collimator and lens (Edmund Optics). Every component was connected to each other using 1 mm fiber optic cables. Stimulus intensity was calibrated with a photodiode (Newport) and set to 1.5 x 10^15 photons/cm2/s using a variable neutral density filter in a rotational motor (Newport). Recordings were amplified with a 0.1x headstage and high impedance amplifier (AxoClamp 900A, Molecular Devices) and digitized at 10 kHz (DigiData1550, Molecular Devices).
PRs were recorded intracellularly using sharp electrodes made from borosilicate glass on an electrode puller (P-97, Sutter Instruments). Electrodes were pulled to a resistance between 90 and 120 Mohm and filled with 3 M KCl. Recordings were made well away from the cut in the dorsal eye, and so exclusively from cells in the ventral half; the ventral third is the more likely extent. Cells were screened with white light on penetration, and only those responding with a depolarization of at least 30 mV were characterized further with monochromatic stimuli. A second criterion was applied to the monochromatic responses, retaining cells whose peak response reached at least 25 mV, relaxed to 15 mV for UV photoreceptors in order to better estimate the proportion of positive and negative tails within an individual. Response magnitude does not predict long wavelength inhibition and does not differ between males that preferentially court yellow females and those that do not.
Stimuli were presented in fixed pseudo-random sequences. Seven sequences were generated in advance and reused across the study, ordered by light intensity rather than by wavelength to limit rotation of the variable neutral density filter. Four repeats per stimulus was the most common number but not the rule; repeats ranged from 1 to 24, with a mean of 3.6. Typically, responses were recorded at multiple intensity levels using neutral density filters (Thorlabs). After recording spectral responses, we also presented the wavelength that evoked the maximum response at twelve intensity levels that varied over 4 log units of attenuation: 0, 0.2, 0.4, 0.6, 1.0, 1.3, 1.6, 2.0, 2.5, 3.0, 3.5 and 4.0 log units. Where such a series was recorded, it was used to transform the isoquantal spectral responses of that PR to a spectral sensitivity curve using the Naka-Rushton equation [109]. A series was obtained for 323 of the 508 PRs: 131 of 180 UV, 85 of 126 blue, 91 of 149 green and 16 of 33 red, and none of the 20 broadband. For the remaining cells the tuning curve is the normalized voltage response rather than a transformed sensitivity curve. The transform is undefined for responses at or below zero and floors there, so a transformed curve cannot represent a hyperpolarizing response; both kinds of curve appear in the deposited tables, and which kind a given cell holds is recorded per cell. The wavelength of peak sensitivity was estimated for each cell by fitting its responses with a standard rhodopsin tuning template [60].
To measure response latency, we first measured the mean and standard deviation of the resting potential for 150 ms before the light flash. Onset latency was defined as the time for the response to exceed five times the standard deviation of this baseline. Latency could be measured only for cells recorded with a shutter TTL channel, from 2019 onward, which excludes the F1 hybrids.
For experiments with the LED, we used green LEDs with peak tuning at 534 nm and a full width half maximum of 12 nm. Six LEDs were attached to the monochromatic source and had an intensity of 3.2 x 10^15 photons/cm2/s. Spectral responses were recorded from each cell before, during, and after turning on the LEDs. This intensity did not bleach PR responses, as the full response magnitude was typically recovered within seconds of turning off the LED. PRs that did not recover at least 80% of the original response were discarded.
When comparing physiology data across groups of butterflies (Figs 4B, 5I and 5J), we tested for significance using GLME models with a logit link function to account for repeated measures within single butterflies. For each model, butterfly identity was included as a random effect. For each analysis, we first computed significance using courtship preference (white, yellow, or equal) as a fixed effect, effectively grouping together taxa with similar behavior (e.g., F1 hybrids with white H. c. alithea). We then conducted a series of models comparing white and yellow H. c. alithea and all pairwise comparisons between H. c. galanthus, H. pachinus, and the F1 hybrid offspring of this pair. For models looking at long wavelength inhibition (Fig 5), we used the normalized response amplitude of a cell at 530 nm for UV cells and 590 nm for blue cells. Substituting presence or absence of inhibition as a binary fixed effect leaves the reported results and conclusions unchanged for courtship preference, for wing color in H. c. alithea, and for H. c. galanthus against H. pachinus. For H. c. galanthus against the F1 hybrids the binary substitution gives p = 0.064 against p = 0.004 on amplitude. Figure 5I plots the proportion of cells classified as inhibited; the p-values reported for it are from the amplitude models.
Changes after Sep 29, 2023:
Changes after Oct 22, 2024:
Changes after Dec 16, 2024: Edited README.md.
Changes made on Aug 31, 2026: Updates to Abstract/Methods and README. Greatly expanded electrophysiology.tar.gz. Detailed descriptions of these changes are detailed in the "Versions" section of the associated README.
- VanKuren, Nicholas W. et al. (2022), Genetic and peripheral visual system changes underlie evolving butterfly mate preference, [], Posted-content, https://doi.org/10.1101/2022.04.25.489404
- VanKuren, Nicholas W.; Buerkle, Nathan P.; Lu, Wei et al. (2025). Genetic, developmental, and neural changes underlying the evolution of butterfly mate preference. PLOS Biology. https://doi.org/10.1371/journal.pbio.3002989
