Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Synk - Rapid synteny plotting tool using Compleasm outputs

synk.pdf

Synk is a tool to plot synteny using BUSCO genes. With BUSCO genes, synteny is plotted rapidly and avoids the issue of mapping paralogs, sinch BUSCO genes are conserved, single copy orthologs. This makes Synk an effective tool for analysing synteny between distantly related species.

Installation

Synk is a python script. Download it!

git clone https://github.com/jomhoff/Synk.git
cd Synk

Dependencies: Pandas; Matplotlib; Rideogram

See DEPENDENCIES.md for full Python, compleasm, miniprot, hmmsearch, R, RIdeogram, and SLURM setup notes.

Recommended conda setup:

conda env create -f environment.yml
conda activate synk
Rscript -e 'remotes::install_github("TickingClock1992/RIdeogram")'

The conda environment pins Python to 3.9 because current compleasm conda builds depend on sepp/dendropy combinations that can conflict with python>=3.10.

Use

One-shot compleasm wrapper

Synk can now run compleasm first and then make every pairwise plot from one main species to any number of comparison species.

Example with automatic karyotypes generated from FASTA sequence lengths:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--compare tiliqua=tiliqua.fa \
--compare egernia=egernia.fa \
--lineage sauropsida \
--threads 16 \
--outdir synk_output \
--plot

Use --compare NAME=ASSEMBLY once for each comparison species. Synk will write:

synk_output/
compleasm/ # one compleasm run per species
karyotypes/ # auto-generated karyotype and replacement files
pairwise/ # one Synk result folder per main-vs-comparison pair

If compleasm has already been run, add --reuse_compleasm and Synk will look for an existing full_table file under each species output folder before rerunning compleasm.

You can also provide curated karyotypes and replacement maps. This is useful when you want chromosome labels or ordering to follow a published karyotype instead of FASTA length order:

python synk.py \
--main_name pfas \
--main_assembly pfas.fa \
--main_karyotype pfas_karyotype.txt \
--main_replacement pfas_replacement.txt \
--compare tiliqua=tiliqua.fa \
--compare_karyotype tiliqua=tiliqua_karyotype.txt \
--compare_replacement tiliqua=tiliqua_replacement.txt \
--lineage sauropsida \
--outdir synk_output \
--plot

Wrapper inputs:

--main_name Name for the main/reference species
--main_assembly Main/reference species genome FASTA
--compare NAME=FASTA Comparison species genome FASTA; repeat for multiple species
--lineage BUSCO lineage to pass to compleasm
--autolineage Let compleasm choose the lineage instead of using --lineage
--threads Threads passed to compleasm (default: 8)
--compleasm compleasm command or path (default: compleasm)
--compleasm_library Optional compleasm lineage library path passed with -L
--reuse_compleasm Reuse existing compleasm full_table outputs when found
--min_contig_length Minimum FASTA sequence length to include in auto-karyotypes

Optional curated karyotype inputs:

--main_karyotype Main karyotype file
--main_replacement Main chromosome replacement map
--compare_karyotype NAME=FILE Comparison karyotype; repeat as needed
--compare_replacement NAME=FILE Comparison replacement map; repeat as needed

Pairwise mode

Usage example:

python synk.py \
--karyotype1 pfas_karyotype.txt \
--karyotype2 tiliqua_karyotype.txt \
--busco1 pfas_busco_format.tsv \
--busco2 tiliqua_busco_format.tsv \
--rep1 replacement_pfas.txt \
--rep2 replacement_tiliqua.txt \
--outdir output_directory \
--cmap viridis \
--plot

Required inputs:

--karyotype1 First species karyotype file (must have columns: Chr, Start, End, Species)
--karyotype2 Second species karyotype file (same format as above)
--busco1 BUSCO full table from species 1 (full_table_BUSCO.tsv)
--busco2 BUSCO full table from species 2
--rep1 Replacement map for species 1 chromosome names (ie. chr1	1)
--rep2 Replacement map for species 2 chromosome names
--outdir Directory for output files

Optional inputs:

--cmap Colormap for chromosome gradient (default: plasma; other: viridis, magma)
--plot Include this flag to generate an ideogram PNG/SVG with RIdeogram
--rscript_path Path to output R script (default: plot_ideogram.R)
--karyo_size Label text size (default: 5)
--karyo_color Label text color (default: black)

Output Files:

- chr_color_map.txt : Map of chromosome names to colors
- color_replace.txt : Map of numeric chromosome order to colors
- merged_busco.txt : Merged BUSCO hits shared between both species
- final_synteny.txt : Synteny links colored by species 1 chromosome
- dual_karyotype.txt : Combined karyotype file with label and fill info
- chromosome.png/.svg : RIdeogram synteny plot (if --plot is used)

Result

pfas-tiliqua_synteny This is the result (with labels edited slightly in illustrator)

Citation

If you use Synk in your work, please cite:

Hoffman, J.J., Burbrink, F.T., Pyron, R.A., Raxworthy, C.J., 2025. Telomere-to-telomere reference genome of the common five-lined skink, Plestiodon fasciatus (Squamata: Scincidae). https://doi.org/10.1101/2025.07.03.663019

About

Rapid synteny plotting tool using Compleasm outputs

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages