Restriction-site associated DNA sequencing
The RADseq data analysed in this manuscript were generated by Kirschner et al.19 using the original RADseq protocol46 with minor modifications47. Raw data were downloaded from the NCBI short read archive (Supplementary Data 1) and genomic SNPs were called anew, using the newer version 2.3d of the Stacks package48. Several runs of denovo_map.pl were done on a subset of raw sequence data to optimize loci yield for each species, following49. The following species-specific parameters were used eventually: E. seguieriana, -n 3 -M 3 -m 5; P. taurica -n 3 -M 3 -m 5; O. petraeus -n 8 -M 8 -m 5; S. nigromaculatus -n 3 -M 3 -m 5; S. capillata -n 8 -M 8 -m5 (-n number of mismatches allowed between fragments between individuals), -M (number of mismatches allowed per fragment) and -m (minimum depth of coverage required to call a fragment)48.
Bayesian clustering analysis
STRUCTURE v. 2.3.4.50 was used to explore patterns of genetic grouping within our datasets. Input files were exported from the Stacks catalogue using the function populations.pl48. Only a single SNP per RADseq fragment (--write-single-snp flag in populations.pl) was selected to avoid linked SNPs, which violate the algorithm‘s assumption that SNPs are in linkage disequilibrium. In an additional filtering step, loci with excess heterozygosity (> 65%) (--max-obs-het flag) were removed. This procedure has been suggested as a way to mitigate calling of paraloguous loci from RADseq data51. The final alignments contained only loci present in at least 40% (E. seguieriana), 15% (O. petraeus), 50% (P. taurica), 25% (S. nigromaculatus), or 33% (S. capillata) of all populations. STRUCTURE50 was run assuming a grouping into K = 1 to 5 clusters for 1,000,000 generations, using a burnin of 100,000 generations and ten replicates per K. The optimal K was assessed based on the rate change in likelihood among runs52.
Estimation of divergence times
Relative divergence times between the extrazonal and zonal genetic lineages were inferred by applying a multi species coalescent (MSC) model as implemented in the software BPP v. 4.2.935, and using the ‘fixed topology’ approach (option A00). For each species, RADseq tags were exported from the STACKS catalogue via populations.pl using the --fasta-samples flag and the –max-obs-het flag to remove loci with excess heterozygosity48 (> 65%, see also above), and were further converted from fasta files to phylip files using the python script fasta2genotype.py53. RADseq tags missing in more than 85% (P. taurica), 75% (E. seguieriana, S. capillata), or 50% (O. petraeus, S. nigromaculatus) were removed in each species. To reduce computational time, random subsets were generated containing 30 (E. seguieriana), 33 (O. petraeus), 33 (P. taurica), 30 (S. capillata), or 23 (S. nigromaculatus) individuals proportionally sampled from the extrazonal and zonal group in each instance (Supplementary Table 1). Similarly, the full alignments of each species were randomly subsetted into smaller alignments containing 300, 400 and 500 RADseq loci for the final analysis. Analysing SNP subsets of different size has been suggested as a way to evaluate consistency of estimates within a given dataset35,54,55. The BPP analyses were run under default settings, assuming data to be diploid and unphased35. MCMC chain length was set to 1,000,000 generations, and 10% of the samples were discarded as burnin. All runs were checked in Tracer v. 1.6.056 to evaluate chain convergence to stationarity and adequate mixing, and to check if the effective sample size for estimated parameters reached at least 200.
Next, the function msc2time.r implemented in the R package bppr57,58 was used to calibrate the relative branch lengths obtained in BPP to absolute divergence times. Specifically, this function calculates absolute divergence times based on MSC derived estimates of τ, by sampling mutation rate and generation time from a gamma distribution to obtain estimates of mutation rate per absolute time. Mutation rates for each species were taken from literature-based estimates for genome-wide mutation rates (plants: 7e-9 substitutions per site per generation59; animals: 2.8e-9 substitutions per site per generation60, and a deviation of 10% was allowed when calibrating τ.
The generation times used to calibrate the time estimates were defined as average time between two successive generations within a lineage or population61. In the case of the univoltine grasshopper species O. petraeus and S. nigromaculatus, this generation time is one year. For the ant species Plagiolepis taurica, no species-specific data is available. The most thorough study on generation times in ants targeting the red harvester ant Pogonomyrmex barbatus found generation times (as defined above) in wild populations to be 7.8 years on average62. A slightly longer generation time of 10±2 years was assumed for P. taurica, since their colonies are smaller and produce fewer offspring. Generation time estimates were not available for the two studied plant species, and the maximum lifespans of related and ecologically similar species were the only available references. Consequently, generation times of 10±2 years and 25±5 years were used for E. seguieriana63 and S. capillata64 (Podgaevskaya & Zolotareva pers. comm. 2020), respectively.
Exploration of demographic history
SNP data were exported to vcf files from the Stacks catalogue using the --vcf flag in populations.pl, allowing for a single SNP per locus by using the –write-single-snp flag48; separate vcf files were generated for the extrazonal lineage and the zonal lineage (n of individuals and sites given in Supplementary Figure 1). From each of these variant files, individuals with an excessive amount of missing data were discarded, and the software vcftools65 was subsequently used to remove SNPs that were missing in more than 85% (E. seguieriana), 75% (P. taurica, S. capillata), and 50% (O. petraeus, S. nigromaculatus) of the individuals. Calculation of the joint site frequency spectrum (SFS) was done using a custom Python script written by Isaac Overcast (available at GitHub https://github.com/isaacovercast/easySFS). This method is particularly suitable for RADseq data, as it handles missing data in the SNP matrix by downprojecting to a smaller sample size and averaging over all possible resamplings. Following the author’s suggestions, downprojection was chosen to retain the maximum number of individuals while avoiding loss of too many SNPs.
The resulting SFS were used to explore population-size changes for each species and for each genetic lineage, using Stairway plots26,27. The blueprint files informing the algorithm were modified for each species, accordingly. Random breakpoints were defined as suggested27. Average generation times and mutation rates were the same as those used for divergence time estimation (see above). The remaining input parameters were not changed from the default settings.
Demographic model testing using Convolutional Neural Networks
To better understand and compare the demographic dynamics of each study species, we evaluated the three potential scenarios for the evolution of the European steppe biota during the Pleistocene climatic oscillations described in the Introduction (‘Parallel expansion’, ‘Zonal expansion only’, ‘No expansion’; Figure 1). The number of individuals analysed per species and lineage, and the number of sites is given in Supplementary Table 1. We performed 10,000 coalescent simulations per scenario with the software ms66, with species-specific priors for generation time and mutation rate as described above, and population sizes based on our Stairway plot results. Because our empirical SNP datasets included different levels of missing data (Supplementary Table 1), we randomly inserted similar proportions of missing characters to the simulated SNP matrices for each species. This procedure allowed us to train the CNN to recover information from the genotype matrices, while also recognizing missing data. We used the network architecture from Oliveira et al.67, modified to include suggestions from Sanchez et al.25, namely the use of different kernel sizes and intercalation of convolutional layers with batch normalization. The trained networks were then used to predict the most likely model on the empirical SNPs and on a new set of 10,000 independent simulations per scenario. We also predicted parameter values for the empirical SNPs and 10,000 independent simulations for the preferred scenario. The obtained CNN predictions were then used to perform an ABC step (with an approach similar to Mondal et al.68; and also recommended by Sanchez et al.25).
Distribution models for extrazonal and zonal lineages
The potential range occupancy of extrazonal and zonal lineages under climatic conditions of the LGM were estimated using the lineage range estimation method69. Species distribution models under LGM climatic conditions based on two general circulation models (MIROC70; CCSM471) were available for all study species19; lineage ranges of extrazonal and zonal lineages within each species were based on these models. Affiliation of each population to the extrazonal or the zonal lineage was derived from the STRUCTURE results; admixed populations were affiliated using a simple majority rule. Lineage range estimation followed the method by Rosauer et al.69, using the R script provided by the authors (github.com/DanRosauer/phylospatial) with default parameters. A relaxed 10th percentile training presence (p10) threshold was applied. This approach was chosen because more stringent thresholds, such as the maximum training sensitivity plus specificity (MTSS) threshold, have been shown to severely under-represent species ranges if a niche is projected from a contracted present-day niche model, which is the case for the Eurasian steppe biota72. The suitability values of lineage distribution models were assessed along two transects north and south of the Alps, using the Temporal/Spectral Profile Tool v. 2.0.3 in QGIS v. 3.10. This gradient analysis was done to visualize continuities and gaps of habitat suitability within areas north and south of the Alps, which acted as a major distribution barrier for many species.