{"id":13639229,"url":"https://github.com/brentp/smoove","last_synced_at":"2025-04-04T19:11:09.491Z","repository":{"id":44566634,"uuid":"119127188","full_name":"brentp/smoove","owner":"brentp","description":"structural variant calling and genotyping with existing tools, but, smoothly.","archived":false,"fork":false,"pushed_at":"2024-06-17T21:55:16.000Z","size":2609,"stargazers_count":248,"open_issues_count":101,"forks_count":21,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-28T18:11:27.722Z","etag":null,"topics":["genomics","lumpy","structural-variation"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brentp.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-27T03:03:11.000Z","updated_at":"2025-03-09T08:12:39.000Z","dependencies_parsed_at":"2022-09-19T05:21:14.022Z","dependency_job_id":"da481016-cb84-4e13-820c-f9312110be49","html_url":"https://github.com/brentp/smoove","commit_stats":null,"previous_names":["brentp/lumpy-smoother"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brentp%2Fsmoove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brentp%2Fsmoove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brentp%2Fsmoove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brentp%2Fsmoove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brentp","download_url":"https://codeload.github.com/brentp/smoove/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234921,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["genomics","lumpy","structural-variation"],"created_at":"2024-08-02T01:00:58.834Z","updated_at":"2025-04-04T19:11:09.468Z","avatar_url":"https://github.com/brentp.png","language":"Go","funding_links":[],"categories":["Next Generation Sequencing","Variant Analysis and Manipulation"],"sub_categories":["Variant Calling"],"readme":"# smoove  \n\n[![Build Status](https://travis-ci.org/brentp/smoove.svg?branch=master)](https://travis-ci.org/brentp/smoove)\n\n`smoove` simplifies and speeds calling and genotyping SVs for short reads. It also improves specificity by removing many\nspurious alignment signals that are indicative of low-level noise and often contribute to spurious calls.\n\nThere is a blog-post describing `smoove` in more detail [here](https://brentp.github.io/post/smoove/)\n\nIt both supports small cohorts in a single command, and population-level calling with 4 total steps, 2\nof which are parallel by sample.\n\nThere is a table on the precision and recall of smoove and duphold (which is used by smoove)[here](https://github.com/brentp/duphold#accuracy)\n\nIt requires:\n\n + [lumpy and lumpy\\_filter](https://github.com/arq5x/lumpy-sv)\n + [samtools](https://github.com/samtools/samtools): for CRAM support\n + [gsort](https://github.com/brentp/gsort): to sort final VCF\n + [bgzip+tabix](https://github.com/samtools/htslib): to compress and index final VCF\n\n And optionally (but all highly recommended):\n\n + [svtyper](https://github.com/hall-lab/svtyper): to genotypes SVs\n + [svtools](https://github.com/hall-lab/svtools): required for large cohorts\n + [mosdepth](https://github.com/brentp/mosdepth): remove high coverage regions.\n + [bcftools](https://github.com/samtools/bcftools): version 1.5 or higher for VCF indexing and filtering. \n + [duphold](https://github.com/brentp/duphold): to annotate depth changes within events and at the break-points.\n\n Running `smoove` without any arguments will show which of these are found so they can be added to the PATH as needed.\n\n`smoove` will:\n\n1. parallelize calls to `lumpy_filter` to extract split and discordant reads required by lumpy\n2. further filter `lumpy_filter` calls to remove high-coverage, spurious regions and user-specified chroms like 'hs37d5';\n   it will also remove reads that we've found are likely spurious signals. \n   after this, it will remove singleton reads (where the mate was removed by one of the previous filters) from the discordant\n   bams. This makes `lumpy` much faster and less memory-hungry.\n3. calculate per-sample metrics for mean, standard deviation, and distribution of insert size as required by lumpy.\n4. stream output of lumpy directly into multiple svtyper processes for parallel-by-region genotyping while lumpy is still running.\n5. sort, compress, and index final VCF.\n\n# installation\n\nyou can get `smoove` and all dependencies via (a large) docker image:\n\n```\ndocker pull brentp/smoove\ndocker run -it brentp/smoove smoove -h\n```\n\nOr, you can download a `smoove` binary from here: https://github.com/brentp/smoove/releases\nWhen run without any arguments, `smoove` will show you which of it's dependencies it can find\nso you can adjust your $PATH and install accordingly.\n\n# usage\n\n## small cohorts (n \u003c ~ 40)\n\nfor small cohorts it's possible to get a jointly-called, genotyped VCF in a **single command**.\n\n```\nsmoove call -x --name my-cohort --exclude $bed --fasta $reference_fasta -p $threads --genotype /path/to/*.bam\n```\noutput will go to `./my-cohort-smoove.genotyped.vcf.gz`\n\nthe `--exclude $bed` is highly recommended as it can be used to ignore reads that overlap problematic regions.\n\nA good set of regions for GRCh37 is [here](https://github.com/hall-lab/speedseq/blob/master/annotations/ceph18.b37.lumpy.exclude.2014-01-15.bed).\n\nAnd for hg38 [here](https://github.com/hall-lab/speedseq/blob/master/annotations/exclude.cnvnator_100bp.GRCh38.20170403.bed)\n\n## population calling\n\nFor population-level calling (large cohorts) the steps are:\n\n1. For each sample, call genotypes:\n\n```\nsmoove call --outdir results-smoove/ --exclude $bed --name $sample --fasta $reference_fasta -p 1 --genotype /path/to/$sample.bam\n```\n\nFor large cohorts, it's better to parallelize across samples rather than using a large $threads per sample. `smoove` can only\nparallelize up to 2 or 3 threads on a single-sample and it's most efficient to use 1 thread.\n\noutput will go to `results-smoove/$sample-smoove.genotyped.vcf.gz``\n\n2. Get the union of sites across all samples (this can parallelize this across as many CPUs or machines as needed):\n\n```\n# this will create ./merged.sites.vcf.gz\nsmoove merge --name merged -f $reference_fasta --outdir ./ results-smoove/*.genotyped.vcf.gz\n```\n\n3. genotype each sample at those sites (this can parallelize this across as many CPUs or machines as needed) and run [duphold](https://github.com/brentp/duphold) to add depth annotations.\n\n```\nsmoove genotype -d -x -p 1 --name $sample-joint --outdir results-genotped/ --fasta $reference_fasta --vcf merged.sites.vcf.gz /path/to/$sample.$bam\n```\n\n4. paste all the single sample VCFs with the same number of variants to get a single, squared, joint-called file.\n\n```\nsmoove paste --name $cohort results-genotyped/*.vcf.gz\n```\n\n5. (optional) annotate the variants with exons, UTRs that overlap from a GFF and annotate high-quality heterozygotes:\n\n```\nsmoove annotate --gff Homo_sapiens.GRCh37.82.gff3.gz $cohort.smoove.square.vcf.gz | bgzip -c \u003e $cohort.smoove.square.anno.vcf.gz\n```\n\nThis adds a `SHQ` (Smoove Het Quality) tag to every sample format) a value of **4 is a high quality** call and the value of 1 is low quality. -1 is non-het.\nIt also adds a `MSHQ` for Mean SHQ to the INFO field which is the mean SHQ score across all heterozygous samples for that variant.\n\nAs a first pass, users can look for variants with MSHQ \u003e 3. If you added [duphold](https://github.com/brentp/duphold) annotations, it's also\nuseful to check deletions with `DHFFC \u003c 0.7` and duplications with `DHFFC \u003e 1.25`.\n\n# Troubleshooting\n\n+ A panic with a message like ` Segmentation fault      (core dumped) | bcftools view -O z -c 1 -o` is likely to mean you have an old version of bcftools. \n  see #10\n\n+ `smoove` will write to the system TMPDIR. For large cohorts, make sure to set this to something with a lot of space. e.g. `export TMPDIR=/path/to/big`\n\n+ `smoove` requires recent version of `lumpy` and `lumpy_filter` so build those from source or get the most recent bioconda version.\n\n# see also\n\n[svtools](https://github.com/hall-lab/svtools)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrentp%2Fsmoove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrentp%2Fsmoove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrentp%2Fsmoove/lists"}