Coder Social home page Coder Social logo

blawlor / picard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from broadinstitute/picard

0.0 1.0 0.0 106.49 MB

A set of command line tools (in Java) for manipulating high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF.

Home Page: http://broadinstitute.github.io/picard/

License: MIT License

XSLT 0.53% CSS 0.08% Scala 0.01% Java 98.33% R 0.57% Shell 0.24% HTML 0.23% Rebol 0.01% Roff 0.01% JavaScript 0.01%

picard's Introduction

Coverage Status Build Status License: MIT

A set of Java command line tools for manipulating high-throughput sequencing (HTS) data and formats.

Picard is implemented using the HTSJDK Java library HTSJDK to support accessing file formats that are commonly used for high-throughput sequencing data such as SAM and VCF.

As of version 2.0.1 (Nov. 2015) Picard requires Java 1.8 (jdk8u66). The last version to support Java 1.7 was release 1.141.

####Building Picard

  • First, clone the repo:
    git clone https://github.com/broadinstitute/picard.git
    cd picard/
  • Picard is now built using gradle. A wrapper script (gradlew) is included which will download the appropriate version of gradle on the first invocation.

  • To build a fully-packaged, runnable Picard jar with all dependencies included, run:

    ./gradlew shadowJar
  • The resulting jar will be in build/libs. To run it, the command is:
    java -jar build/libs/picard.jar
    
    or
    
    java -jar build/libs/picard-<VERSION>-all.jar 
  • To build a jar containing only Picard classes (without its dependencies), run:
    ./gradlew jar
  • To clean the build directory, run:
    ./gradlew clean

####Running Tests

  • To run all tests, the command is:
    ./gradlew test
  • To run a specific test, the command is:
    ./gradlew test -Dtest.single=TestClassName 

####Changing the released version of HTSJDK that Picard depends on

To switch Picard's HTSJDK dependency to a different released version:

  • Open build.gradle
  • Edit VERSION in the following line to be a different released version of HTSJDK. HTSJDK releases are listed here
    final htsjdkVersion = System.getProperty('htsjdk.version', 'VERSION')`
  • Open a pull request with this change

####Building Picard with a Custom Version of HTSJDK

During development in Picard, it is sometimes necessary to build locally against an unreleased version or branch of HTSJDK.

  • To build against an unreleased version of HTSJDK's master branch:

    • Go to the Broad artifactory, where continuous snapshots of HTSJDK's master branch are published, and select the version you want to use. For example, 2.5.1-9-g5740ca1-SNAPSHOT. You can search by tag or short git commit hash.
    • In your Picard clone, run ./gradlew shadowJar -Dhtsjdk.version=VERSION, where VERSION is the version of the HTSJDK master branch snapshot you want to use.
  • To build against a version of HTSJDK that has not yet been merged into HTSJDK's master branch:

    • Clone HTSJDK, and in your clone check out the tag or branch you want to build Picard with.
    • Run ./gradlew install printVersion in your htsjdk clone to install that version to your local maven repository. Take note of the version number that gets printed at the end.
    • Switch back to your Picard clone, and run ./gradlew shadowJar -Dhtsjdk.version=VERSION, where VERSION is the version of HTSJDK you installed to your local maven repository.

####Releasing Picard

Full instructions on how to create a new release of Picard are here


It's also possible to build a version of Picard that supports reading from GA4GH API, e.g. Google Genomics:

git clone https://github.com/googlegenomics/gatk-tools-java

  • Build gatk-tools-java:

gatk-tools-java$ mvn compile package

  • Copy the resulting jar into Picard lib/ folder:
gatk-tools-java$ mkdir ../picard/lib/gatk-tools-java
gatk-tools-java$ cp target/gatk-tools-java*minimized.jar ../picard/lib/gatk-tools-java/
  • Build Picard version with GA4GH support:

picard$ ant -lib lib/ant package-commands-ga4gh

  • If you have not yet worked with Google Genomics API and need to set up authentication, please follow the instructions here to set up credentials and obtain client_secrets.json file.

  • You can now run

java -jar dist/picard.jar ViewSam \
INPUT=https://www.googleapis.com/genomics/v1beta2/readgroupsets/CK256frpGBD44IWHwLP22R4/ \
GA4GH_CLIENT_SECRETS=../client_secrets.json
  • To run using GRPC as opposed to REST Genomics API implementation (which is much faster) use the following command that utilizes ALPN jars that come with gatk-tools-java and enables GRPC support:
java \
-Xbootclasspath/p:../gatk-tools-java/lib/alpn-boot-8.1.3.v20150130.jar \
-Dga4gh.using_grpc=true \
-jar dist/picard.jar ViewSam \
INPUT=https://www.googleapis.com/genomics/v1beta2/readgroupsets/CK256frpGBD44IWHwLP22R4/ \
GA4GH_CLIENT_SECRETS=../client_secrets.json

For Java 7 (as opposed to 8) use alpn-boot-7.1.3.v20150130.jar.


Picard is migrating to semantic versioning (http://semver.org/). We will eventually adhere to it strictly and bump our major version whenever there are breaking changes to our API, but until we more clearly define what constitutes our official API, clients should assume that every release potentially contains at least minor changes to public methods.

Please see the Picard Documentation for more information.

picard's People

Contributors

alecw avatar tfenne avatar nh13 avatar jacarey avatar mccowan avatar eitanbanks avatar gbggrant avatar ktibbett avatar kbergin avatar geoffjentry avatar cristynkells avatar mattsooknah avatar lbergelson avatar yfarjoun avatar droazen avatar ronlevine avatar danxmoran avatar meganshand avatar bw2 avatar jmthibault79 avatar akiezun avatar jrobinso avatar silinpavel avatar fleharty avatar lhogstrom avatar kasont avatar lindenb avatar cmnbroad avatar davidangb avatar abaumann avatar

Watchers

Brendan Lawlor 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.