Liking cljdoc? Tell your friends :D

varity

Clojars Project Build Status codecov

Variant translation library for Clojure.

Features

  • VCF variant ⇄ HGVS
  • Finding HGVS aliases
  • Conversion of a genomic coordinates between assemblies

Installation

Clojure CLI/deps.edn:

varity {:mvn/version "0.7.0"}

Leiningen/Boot:

[varity "0.7.0"]

To use varity with Clojure 1.8, you must include a dependency on clojure-future-spec.

Usage

Documentation

API Reference

Notice

All positions are represented as one-based number, and all ranges are represented as one-based closed intervals. For example,

{:pos 3}

represents the third position from the start, and

{:chr "chr1", :start 1, :end 3}

represents the first three bases of chromosome 1.

VCF variant to HGVS

varity.vcf-to-hgvs provides functions to convert a VCF-style variant into HGVS. The returned HGVS is data structure of clj-hgvs.

(require '[varity.vcf-to-hgvs :as v2h])

(v2h/vcf-variant->hgvs {:chr "chr7", :pos 55191822, :ref "T", :alt "G"}
                       "path/to/hg38.fa" "path/to/refGene.txt.gz")
;;=> ({:coding-dna #clj-hgvs/hgvs "NM_005228:c.2573T>G",
;;     :protein #clj-hgvs/hgvs "p.L858R"})

Use clj-hgvs.core/format to obtain HGVS text.

(require '[clj-hgvs.core :as hgvs])

(def l858r (-> (v2h/vcf-variant->protein-hgvs {:chr "chr7", :pos 55191822, :ref "T", :alt "G"}
                                              "path/to/hg38.fa" "path/to/refGene.txt.gz")
               first))

(hgvs/format l858r {:amino-acid-format :long})
;;=> "p.Leu858Arg"

HGVS to VCF variants

varity.hgvs-to-vcf provides functions to convert HGVS into VCF-style variants.

(require '[varity.hgvs-to-vcf :as h2v]
         '[clj-hgvs.core :as hgvs])

(h2v/hgvs->vcf-variants #clj-hgvs/hgvs "NM_005228:c.2573T>G" "path/to/hg38.fa" "path/to/refGene.txt.gz")
;;=> ({:chr "chr7", :pos 55191822, :ref "T", :alt "G"})

(h2v/hgvs->vcf-variants #clj-hgvs/hgvs "c.2573T>G" "EGFR" "path/to/hg38.fa" "path/to/refGene.txt.gz")
;;=> ({:chr "chr7", :pos 55191822, :ref "T", :alt "G"})

(h2v/hgvs->vcf-variants #clj-hgvs/hgvs "p.A222V" "MTHFR" "path/to/hg38.fa" "path/to/refGene.txt.gz")
;;=> ({:chr "chr1", :pos 11796320, :ref "GG", :alt "CA"}
;;    {:chr "chr1", :pos 11796320, :ref "GG", :alt "AA"}
;;    {:chr "chr1", :pos 11796320, :ref "GG", :alt "TA"}
;;    {:chr "chr1", :pos 11796321, :ref "G", :alt "A"})

Finding HGVS aliases

varity.hgvs/find-aliases finds alternative HGVS expressions for the same variant.

(require '[varity.hgvs :as vhgvs])

(vhgvs/find-aliases #clj-hgvs/hgvs "NM_000059:c.162CAA[1]"
                    "path/to/hg38.fa" "path/to/refGene.txt.gz")
;;=> (#clj-hgvs/hgvs "NM_000059:c.162CAA[1]"
;;    #clj-hgvs/hgvs "NM_000059:c.165_167delCAA")

Conversion of a genomic coordinate between assemblies

To convert a genomic coordinate between assemblies,

(require '[varity.lift :as lift])

(lift/convert-coord {:chr "chr1", :pos 743267} "path/to/hg19ToHg38.over.chain.gz")
;;=> {:chr "chr1", :pos 807887}

License

Copyright 2017-2021 Xcoo, Inc.

Licensed under the Apache License, Version 2.0.

Can you improve this documentation? These fine people already did:
Toshiki Takeuchi & alumi
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close