Giter Site home page Giter Site logo

jxshi / primerdesign Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zichner/primerdesign

0.0 0.0 0.0 19 KB

A tool to design highly specific PCR primers for the validation of genomic alterations including structural variants

License: MIT License

Python 100.00%

primerdesign's Introduction

primerDesign

A tool to design highly specific PCR primers for the validation of genomic alterations, including structural variants. Supported variant types are: SNVs/SNPs, deletions, tandem duplications, inversion, and translocations.

The tool was applied in the 1000 genomes project paper "An integrated map of structural variation in 2,504 human genomes" by Sudmant et al. (Sep 2015; http://dx.doi.org/10.1038/nature15394).

Installation

primerDesign is available as a Docker container, including all software dependencies as well as a BLAST database for the human reference genome (version hs37d5 provided by the 1000 genomes project).

Alternatively, you can run primerDesign without Docker. In this case you need the following software/tools:

Furthermore, you need to generate a BLAST database for your reference genome, e.g.:
makeblastdb -in REF_GENOME.fa -dbtype nucl -parse_seqids

NB: primerDesign has only been tested on Linux systems.

Input

Configuration file

In the configuration file, you specify the location of the reference genome, of the Primer3 paramter files, and of the executables primer3_core, as blastn, as well as blastdbcmd. Furthermore, you can define the paraemters used for the primer design.
(The four example configuration files are prepared for the use with the primerDesign Docker container.)

List of genomic variants

The list of genomic variants to design PCR primers for can be provided as an Excel xls file or as a tab-delimited text file. The columns are:

  • chromosome of variant start
  • position of variant start
  • chromosome of variant end (only necessary for translocations, for all other variants you can put ".")
  • position of variant end
  • variant type
  • comment (if there is no comment, put ".")

Variant type can be one of the following

  • 'snv' (single nucleotide variant/polymorphism)
  • 'del' (deletion)
  • 'dup' (tandem duplication)
  • 'inv3to3', 'inv5to5', 'invAlt', 'invRef' (inversion with indication of orientation. For 'invAlt' and 'invRef', one primer pair for each inversion breakpoint is designed)
  • 'trans3to3', 'trans3to5', 'trans5to3', 'trans5to5' (translocation with indication of orientation)

Running primerDesign

Docker version

Download the Docker container (needs to be done only once):
docker pull zichner/primer-design

Execute primerDesign:
docker run -v /PATH/TO/DATA/FOLDER:/data/ zichner/primer-design CONFIG_FILE VARIANT_LIST [RESULT_FILE]

CONFIG_FILE and VARIANT_LIST need to be located in /PATH/TO/DATA/FOLDER. The RESULT_FILE will be stored there as well.
If you have your own BLAST database you can make it accessible for Docker by adding -v /PATH/TO/BLASTDB:/blastDb/ to the Docker run command. Furthermore, you need to adjust the BLAST DB path in the configuration file to /blastDB/BLAST_DB_NAME.

Python script

pyhon primerDesign.py CONFIG_FILE VARIANT_LIST [RESULT_FILE]

If no result file is specified, the results will be printed to stdout.

Output

The pipeline produces two list of primer pairs. The first one contains primer pairs where at least one of the two primers is unique. And in the second list, both primers of a pair are unique (however, they might be further away from the break point or of lower quality).

The columns of the output are the same as the input, plus: Primer3 quality, primer1, primer2, uniqueness primer1, uniqueness primer2, temp primer1, temp primer2, distance to breakpoint primer1, distance to breakpoint primer2, primer1 sequencable, primer2 sequencable, primer1 coordinate, primer2 coordinate, expected band size variant, expected band size reference.

primerdesign's People

Contributors

zichner avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.