Thank you for your interest in contributing to GATK-SV!
When it comes to open-source, every contribution makes the software better for everyone and is appreciated by the community. To express our gratitude for your contribution, we would like to provide you with easy-to-follow steps to get started.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
GATK-SV and everyone participating in it is governed by the Broad Institute Code of Conduct. By participating, you are expected to uphold this code.
GATK-SV is a cloud-native pipeline written in Workflow Description Language (WDL) that orchestrates joint genotyping structural variations using open-source tools and custom scripts. The tools and scripts are distributed in Docker containers, and the pipeline is executed using a Cromwell server running on commercial cloud platforms. You may interface with a Cromwell server using Cromshell or Terra platform. We currently publish Docker images on Google Container Registry (GCR) and Azure Container Registry (work-in-progress).
To study your data using the GATK-SV pipeline, please refer to the documentation for details.
Please refer to the documentation. If you still have questions, please start a new issue under the Issues tab.
We appreciate your bug reports; bugs are tracked as GitHub issues. Before submitting a bug report, please search the issues tab, as you may find a similar issue reported. Please submit a bug report if you do not find a similar issue.
The following guidelines help submit bug reports that are easier to understand and reproduce by the maintainers and the community and help find related reports.
- Use a clear and descriptive title for the issue;
- Provide a minimally reproducible example;
- Provide specific details on how the observed and expected behaviors differ.
Thank you for considering code contributions to GATK-SV. All code contributions to the GATK-SV repository are made through pull requests (PR), and you may take the following steps to prepare and submit your PRs.
A fork is your copy of a GitHub repository that you can make your changes without affecting the source.
You may create a fork of broadinstitute/gatk-sv following these instructions.
Once you have forked broadinstitute/gatk-sv,
you need to download your fork to your computer so you can implement any changes.
This process is commonly known as clone
ing a GitHub repository. You may follow
these instructions
on cloning your fork of GATK-SV, or in a nutshell, you may run the following commands.
-
Clone your fork
git clone https://github.com/YOUR_GITHUB_USERNAME/gatk-sv . cd gatk-sv
-
Add a reference to
broadinstitute/gatk-sv
so you can keep your fork in sync in the future.git remote add upstream https://github.com/broadinstitute/gatk-sv
In a loose sense, a branch
is an isolated copy of the code in your forked repository, where the changes
you implement in one branch does not affect the code on the other branches.
It is a common practice to create one branch per each feature you would like
to implement, and do not implement features on the main
branch of the repository.
It is mainly because you can use the main
branch to synchronize your fork with
the upstream (i.e., broadinstitute/gatk-sv
) and get a fresh copy of the up-to-date codebase to start your feature development.
You may create a branch using GitHub or git. In a nutshell, you may create a branch as the following.
-
Ensure you are on the
main
branch.git checkout main
-
Create a branch.
git checkout -b YOUR-BRANCH-NAME
-
Synchronize your branch with
broadinstitute/gatk-sv
.git fetch upstream git merge upstream/main
-
Push your branch to GitHub.
git push –set-upstream origin YOUR-BRANCH-NAME
You may open the code base in any text editor or integrated development environment (IDE). We recommend using PyCharm or Visual Studio, which are both freely available. Please follow the following guidelines when making changes to the codebase.
-
Coding Style: GATK-SV is composed of code written in various programming languages, including WDL, Python, Bash, and R. Please follow the styling guidelines of each programming language; e.g., PEP-8 for Python.
-
Documentation: Please add concise and descriptive documentation to your changes.
Committing changes means tracking them via git. You may submit a change in
one commit or split it into multiple related commits. Though there is no hard
rule on splitting your commits, there are
best practices
that we highly recommend. In GATK-SV, we
squash and merge
pull requests, which squashes all the commits into a single commit and
merge on the main
branch.
You may commit changes to git using its command line interface (CLI) from a terminal or use the graphical user interface (GUI) of the IDE you are using. You may use the following command if you are using a terminal (details here, or follow the guidelines on making commits in PyCharm and Visual Studio).
git commit -m "commit message"
The commits you created are tracked on the feature branch of your fork. To bring these changes to GATK-SV, you need to create a pull request.
-
You may follow these guidelines on creating a pull request.
-
Choose a concise and descriptive title for your pull request that briefly summarizes your proposed improvements. Avoid unnecessary details such as your initials or branch names in the title.
-
Provide concise and descriptive information on the expected behavior.
-
Thoroughly test your changes and provide minimally reproducible steps to test your code.
After your pull request is reviewed and approved, your commits can be squash-committed
to the main
branch of GATK-SV.
By contributing your code to the GATK-SV GitHub repository, you agree to license your contribution under the BSD 3-Clause license.