Basic Improvement

LUMPY versus smoove: comparison tests

Project Overview

Because the standard LUMPY workflow had an issue with excessive runtime, I tested the LUMPY pipeline using the following approaches:

  1. lumpyexpress with BED: Provided the complete BED file from the smoove GitHub repository, which is designed for hg38.
  2. lumpyexpress without BED: Ran lumpyexpress without providing a BED file.
  3. smoove with BED: Provided the complete BED file from the smoove GitHub repository, which is designed for hg38.
  4. smoove without BED: Ran smoove without providing a BED file.

Sample A

line counts of SV

with bed without bed
lumpyexpress 5991 NEVER COMPLETED
smoove 4168 4667

lumpy with bed

lumpy with bed
lumpy with bed

smoove with bed

smoove with bed
smoove with bed

smoove without bed

smoove without bed
smoove without bed

Sample B

line counts of SV

with bed without bed
lumpyexpress 5730 14347
smoove 3904 4360

lumpy without bed

lumpy without bed
lumpy without bed

→ obvious more BND? lumpy with bed

lumpy with bed
lumpy with bed

smoove without bed

smoove without bed
smoove without bed

smoove with bed

smoove with bed
smoove with bed
  • Run six SV callers in parallel to improve execution efficiency.

Introduce Git Culture & Refactor Product Line For Easier Maintenance

Project Overview

The legacy TGSafe annotation workflow was scattered across multiple scripts and versioned files, making it hard to maintain, debug, and update consistently. I refactored and integrated the workflow into a single command-line pipeline, TGSafe_AnnotationPipeline.sh, to centralize the annotation process and simplify management. The unified pipeline now handles SNV/INDEL annotation, result integration, filtering, SV/CNV annotation, optional mitochondrial analysis, and output shipping in one controlled workflow. This refactor improved maintainability, reduced duplicated logic, made WES/WGS and Tsai/TGIAE branching easier to manage, and created a cleaner foundation for future optimization.

Unified TGSafe annotation workflow
Unified TGSafe annotation workflow

MOPline

Upstream MOPline project

Project Overview

This project adapts MOPline into a practical, container-oriented structural variant pipeline for internal WGS analysis. The original MOPline workflow provides the core SV integration logic, including merging calls from multiple SV callers, adding coverage evidence, joint calling, genotyping, annotation, and filtering. This customized version keeps that analytical backbone but redesigns the execution layer so that each external tool can run in an isolated containerized environment. The main engineering goal is reproducibility and operability. Instead of requiring every SV caller and its dependencies to be installed directly on the host machine, the pipeline delegates tool execution to containers. This allows tools with conflicting software stacks, legacy operating system requirements, Java versions, compiled libraries, or reference data layouts to coexist in the same workflow. The pipeline is organized around a single-sample WGS use case. It prepares the input alignment, runs multiple SV callers, normalizes caller outputs into MOPline-compatible VCFs, merges evidence across tools, adds coverage-based support, performs joint calling and SMC-based refinement, annotates variants, filters candidate SVs, and exports final results for downstream review.

Key Distinction from Source Code

A key distinction from the original MOPline GitHub version is that this implementation is not only a script collection for running MOPline commands. It introduces a container-aware orchestration layer around the SV callers and supporting utilities. The Perl runner scripts and wrapper scripts were modified HEAVILY so that tool commands are launched through containers, while the pipeline still preserves MOPline’s expected input/output structure.

Container-aware MOPline pipeline structure
Container-aware MOPline pipeline structure

Main Challenges

  • Containerizing multiple SV callers that cannot realistically be installed together in one host environment.
  • Handling conflicting dependencies across tools, including OS versions, Java/R versions, compiled libraries, and binary packages.
  • Mapping host paths, reference files, inputs, outputs, and working directories correctly into each container.
  • Controlling CPU and memory usage so parallel containerized callers do not overload the server.
  • Keeping containerized execution compatible with MOPline’s original downstream merging, genotyping, annotation, and filtering workflow.

Database

I created the database to mainly track elapsed time of analysis of different pipelines and validation results. It is also useful for trend analysis, such as comparing runtime across sample types, modes, and pipeline versions over time.

Pipeline runtime and validation database
Pipeline runtime and validation database
← Back to projects