Analysis code for comparative plastome genomics in the genus Cicer, from the Bioengineering & Molecular Genetics Laboratory (BMGLab), Ege University.
This repository contains the complete computational pipeline for:
Kaymaz Y, Temel M, Ates D, Tanyolaç MB. Plastome phylogenomics of annual Cicer: structural synapomorphies delimit the chickpea gene pools. (submitted)
The study assembles a quality-controlled panel of 14 complete plastid genomes spanning all nine annual Cicer species with deposited plastomes, and analyses phylogeny, structural rearrangements, nucleotide diversity, barcode resolution, episodic selection, and maternal population structure across 41 wild accessions.
| Stage | Scripts | Purpose |
|---|---|---|
| Panel assembly & QC | 01–07 |
Build the 14-genome panel, normalize strand/rotation/isomer, structural scan, alignment QC, outgroup handling, character polarization |
| Coding sequences | 10–12 |
CDS extraction from native annotations plus exon-aware homology transfer |
| Diversity & markers | 13, 14, 17, 18, 18b |
Sliding-window π and hotspots, SSR/repeat scans, codon usage, barcode resolution screening |
| Selection | 15, 16, 19 |
Codon alignments, HyPhy BUSTED/FEL, BH-FDR summary |
| Phylogenetics | 20, 21 |
Partitioned concatenation, gene/site concordance factors, rooted supermatrix |
| Figures | 30–35, 61 |
All main and supplementary figures |
| Verification | 50_audit |
Re-extraction and rebuild steps applied after internal audit |
| Population module | 60, 62, 61 |
SRA streaming, mapping, reference-length consensuses, haplotype networks, diagnostic-site validation, structural scoring from read pairs |
Scripts are numbered in execution order. Stages are independent once their inputs exist.
conda env create -f envs/environment.yml
conda activate plastomicsExternal tools and versions used for the published analyses: MAFFT 7.490,
MUMmer 4.0.0rc1 (nucmer/dnadiff), IQ-TREE 3.1.2, HyPhy 2.5.93, minimap2 2.24,
samtools 1.18, SRA Toolkit (fastq-dump); Python 3.13 with Biopython 1.87,
NumPy 2.3, SciPy 1.16, matplotlib 3.10, networkx 3.5.
No paths are hardcoded. Every script resolves its working directory from environment
variables, falling back to ./work inside the repository:
export PLASTOMICS_PANEL=/path/to/working/dir # analysis outputs (default: ./work)
export PLASTOMICS_DOWNLOADS=$PLASTOMICS_PANEL/downloads # GenBank/FASTA downloads
export IQTREE_BIN=iqtree3 # optional binary overrides
export HYPHY_BIN=hyphyThe pipeline consumes only public sequence data plus the four genomes generated by this laboratory; nothing in this repository needs to be regenerated by hand.
- Plastome assemblies — the 14-genome panel and outgroups are listed with their
accessions in
metadata/panel_accessions.tsv. Four are our own submissions under ENA project PRJEB47534 (OU707005.1, OU707007.1, OU707008.1, OU707011.1); the remainder are public NCBI/ENA records. - Population resequencing — 41 runs from BioProject PRJNA416007
(von Wettberg et al. 2018), listed in
metadata/pop_picks.tsvand streamed directly from the SRA byscripts/62_pop_consensus_batch.sh. metadata/population_accessions.tsvrecords the species assignment, haplotype and callable fraction obtained for each run.
# 1. fetch reference records into $PLASTOMICS_DOWNLOADS, then:
python scripts/01_panel_table.py
python scripts/02_normalize.py
python scripts/03_struct_scan.py
# ... continue in numeric order
# population module (streams ~1.5M read pairs per run; several hours, ~10 GB transient)
bash scripts/62_pop_consensus_batch.sh
python scripts/60_pop_analysis.pyFigure scripts can be run once their upstream stage has completed.
NC_011163.1(the C. arietinum RefSeq record) carries two compensating single-nucleotide indels in rpoC2 that frameshift the intervening block. The selection pipeline masks these codons; the pre-correction outputs are retained for comparison. Analyses that reuse this reference without masking will recover a spurious rpoC2 selection signal.OU707005.1is deposited as the alternative ir133 flip-flop isomer.02_normalize.pyrestores it to the panel-majority configuration. Skipping this step converts an isomer difference into roughly 20 kb of spurious divergence.- The trnN-GUU inversion window is masked before phylogenetic inference so that the structural character stays independent of the topology it annotates.
If you use this pipeline, please cite the archived release:
Kaymaz Y, Temel M, Ates D, Tanyolaç MB (2026). Plastomics: comparative plastome analysis pipeline for annual Cicer (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.21914078
Code released under the MIT License (see LICENSE). Sequence data are subject to the terms of the originating public repositories.
Corresponding author: Prof. Dr. Muhammed Bahattin Tanyolaç — bahattin.tanyolac@ege.edu.tr Ege University, Faculty of Engineering, Department of Bioengineering, İzmir, Türkiye