From fff169e7f30cb2e21717fd79d5fb0f80bb37ee1c Mon Sep 17 00:00:00 2001 From: Ronak H Shah Date: Tue, 7 Jun 2016 09:31:08 -0400 Subject: [PATCH] Docs --- README.rst | 38 +- docs/_build/doctrees/environment.pickle | Bin 164804 -> 164664 bytes docs/_build/doctrees/iCallSV.doctree | Bin 361190 -> 328225 bytes docs/_build/html/_sources/iCallSV.txt | 66 ++- docs/_build/html/genindex.html | 44 +- docs/_build/html/iCallSV.html | 386 ++++++------------ docs/_build/html/index.html | 20 +- docs/_build/html/objects.inv | Bin 803 -> 734 bytes docs/_build/html/py-modindex.html | 5 - docs/_build/html/searchindex.js | 2 +- docs/_build/json/_sources/iCallSV.txt | 66 ++- docs/_build/json/environment.pickle | Bin 164804 -> 164664 bytes docs/_build/json/genindex.fjson | 2 +- docs/_build/json/iCallSV.fjson | 2 +- docs/_build/json/index.fjson | 2 +- docs/_build/json/objects.inv | Bin 798 -> 727 bytes docs/_build/json/py-modindex.fjson | 2 +- docs/_build/json/searchindex.json | 2 +- docs/_build/latex/iCallSV.tex | 376 +++++------------ docs/iCallSV.rst | 66 ++- iCallSV/configuration/template.ini | 31 +- iCallSV/utilities/check_cDNA_contamination.py | 116 ++++++ .../{ => utilities}/iCallSV_dmp_wrapper.py | 0 23 files changed, 571 insertions(+), 655 deletions(-) create mode 100755 iCallSV/utilities/check_cDNA_contamination.py rename iCallSV/{ => utilities}/iCallSV_dmp_wrapper.py (100%) diff --git a/README.rst b/README.rst index 2f5bf0c..7be8361 100644 --- a/README.rst +++ b/README.rst @@ -140,9 +140,9 @@ Configuration File Format ####Control Allele Fraction Hotspot#### ControlAltFreqHotspot = 0 ####Case Allele Fraction#### - CaseAltFreq: 0.08 + CaseAltFreq: 0.10 ####Total Case Coverage##### - CaseCoverage = 8 + CaseCoverage = 10 ####Control Allele Fraction#### ControlAltFreq = 0 ###Overall Supporting Read-pairs ### @@ -162,13 +162,13 @@ Configuration File Format ###Case Supporting splitreads Hotspot ### CaseSupportingSplitReadsHotspot: 0 ###Control Supporting Read-pairs ### - ControlSupportingReads: 5 + ControlSupportingReads: 3 ###Control Supporting Read-pairs Hotspot ### - ControlSupportingReadsHotspot: 5 + ControlSupportingReadsHotspot: 3 ###Control Supporting splitreads ### - ControlSupportingSplitReads: 5 + ControlSupportingSplitReads: 3 ###Control Supporting splitreads Hotspot ### - ControlSupportingSplitReadsHotspot: 5 + ControlSupportingSplitReadsHotspot: 3 ###Length of Structural Variant### LengthOfSV: 500 ###Overall Mapping Quality Threshold### @@ -232,6 +232,10 @@ Quick Usage Utilities ========= + +Running iCallSV on MSK-IMPACT Pools +----------------------------------- + **This is only for MSK-IMPACT internal samples** .. code-block:: sh @@ -264,6 +268,28 @@ Utilities -v, --verbose make lots of noise [default] -o /somepath/output, --outDir /somepath/output Full Path to the output dir. + + + +Taking the iCallSV and chechking for processed transcript/cDNA in samples +------------------------------------------------------------------------- + +.. code-block:: sh + > python check_cDNA_contamination.py -h + usage: check_cDNA_contamination.py [options] + + Calculate cDNA contamination per sample based of the Structural Variants + Pipeline result + + optional arguments: + -h, --help show this help message and exit + -v, --verbose make lots of noise [default] + -s SVfile.txt, --svFile SVfile.txt + Location of the structural variant file to be used + -o cDNA_contamination, --outputFileName cDNA_contamination + Full path name for the output file + + \ No newline at end of file diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 1ff1efe85ee27b97fccd28fa0e61a51336a47898..02a4a53c6abae12fe45273283dbf3f45b89634a1 100644 GIT binary patch delta 26191 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 QdR}8}T6oH}Rb9m%87=zzJKTRNLd#cW%l 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℘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 literal 361190 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�np7!4MX_ynmvtnm?3SQ!nXw!oK)a#sm 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Τu@9{0fmdL?Al?^^Hx8_l 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 mLbvm8ac*ySIz67M$fzf5V|)d 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 diff --git a/docs/_build/html/_sources/iCallSV.txt b/docs/_build/html/_sources/iCallSV.txt index 210668a..8b8d8a8 100644 --- a/docs/_build/html/_sources/iCallSV.txt +++ b/docs/_build/html/_sources/iCallSV.txt @@ -57,7 +57,7 @@ This files are given in the ``data`` folder inside iCallSV. Configuration File Format ========================= -.. code-block:: ini +.. code-block:: sh #~~~Template configuration file to run iCallSV~~~# #### Path to python executable ### @@ -116,9 +116,9 @@ Configuration File Format ####Control Allele Fraction Hotspot#### ControlAltFreqHotspot = 0 ####Case Allele Fraction#### - CaseAltFreq: 0.08 + CaseAltFreq: 0.10 ####Total Case Coverage##### - CaseCoverage = 8 + CaseCoverage = 10 ####Control Allele Fraction#### ControlAltFreq = 0 ###Overall Supporting Read-pairs ### @@ -138,13 +138,13 @@ Configuration File Format ###Case Supporting splitreads Hotspot ### CaseSupportingSplitReadsHotspot: 0 ###Control Supporting Read-pairs ### - ControlSupportingReads: 5 + ControlSupportingReads: 3 ###Control Supporting Read-pairs Hotspot ### - ControlSupportingReadsHotspot: 5 + ControlSupportingReadsHotspot: 3 ###Control Supporting splitreads ### - ControlSupportingSplitReads: 5 + ControlSupportingSplitReads: 3 ###Control Supporting splitreads Hotspot ### - ControlSupportingSplitReadsHotspot: 5 + ControlSupportingSplitReadsHotspot: 3 ###Length of Structural Variant### LengthOfSV: 500 ###Overall Mapping Quality Threshold### @@ -162,9 +162,10 @@ Quick Usage python iCallSV.py -sc /path/to/template.ini -abam /path/to/casebamFile -bbam /path/to/controlbamFile -aId caseID -bId controlId -o /path/to/output/directory -op prefix_for_the_output_files + .. code-block:: sh - > python iCallSV.py -h + python iCallSV.py -h usage: iCallSV.py [-h] [-v] [-V] -sc config.ini -abam caseBAMFile.bam -bbam controlBAMFile.bam -aId caseID -bId controlID -o @@ -207,11 +208,15 @@ Quick Usage Utilities ========= + +Running iCallSV on MSK-IMPACT Pools +----------------------------------- + **This is only for MSK-IMPACT internal samples** .. code-block:: sh - > python iCallSV_dmp_wrapper.py -h + python iCallSV_dmp_wrapper.py -h usage: iCallSV_dmp_wrapper.py [options] @@ -239,11 +244,39 @@ Utilities -v, --verbose make lots of noise [default] -o /somepath/output, --outDir /somepath/output Full Path to the output dir. - + + +Taking the iCallSV and chechking for processed transcript/cDNA in samples +------------------------------------------------------------------------- + +.. code-block:: sh + + python check_cDNA_contamination.py -h + usage: check_cDNA_contamination.py [options] + + Calculate cDNA contamination per sample based of the Structural Variants + Pipeline result + + optional arguments: + -h, --help show this help message and exit + -v, --verbose make lots of noise [default] + -s SVfile.txt, --svFile SVfile.txt + Location of the structural variant file to be used + -o cDNA_contamination, --outputFileName cDNA_contamination + Full path name for the output file + Submodules ========== +iCallSV.iCallSV module +---------------------- + +.. automodule:: iCallSV.iCallSV + :members: + :undoc-members: + :show-inheritance: + iCallSV.FilterDellyCalls module ------------------------------- @@ -340,18 +373,19 @@ iCallSV.filterAnnotatedSV module :undoc-members: :show-inheritance: -iCallSV.iCallSV module ----------------------- -.. automodule:: iCallSV.iCallSV +iCallSV.utilities.iCallSV_dmp_wrapper module +-------------------------------------------- + +.. automodule:: iCallSV.utilities.iCallSV_dmp_wrapper :members: :undoc-members: :show-inheritance: -iCallSV.iCallSV_dmp_wrapper module ----------------------------------- +iCallSV.utilities.check_cDNA_contamination module +------------------------------------------------- -.. automodule:: iCallSV.iCallSV_dmp_wrapper +.. automodule:: iCallSV.utilities.check_cDNA_contamination :members: :undoc-members: :show-inheritance: diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html index 0b34eb9..32b9187 100644 --- a/docs/_build/html/genindex.html +++ b/docs/_build/html/genindex.html @@ -129,10 +129,6 @@

G

GetFilteredRecords() (in module iCallSV.FilterDellyCalls)
- -
getSubDirs() (in module iCallSV.iCallSV_dmp_wrapper) -
- @@ -180,10 +176,6 @@

I

-
iCallSV.iCallSV_dmp_wrapper (module) -
- -
iCallSV.launch_FilterDellyCalls (module)
@@ -256,19 +248,15 @@

M

- + -
-
main() (in module iCallSV.iCallSV_dmp_wrapper) -
- -
MakeIndex() (in module iCallSV.makebamindex)
-
makeOutputDir() (in module iCallSV.make_analysis_dir)
+
myThread (class in iCallSV.launchThreads)
@@ -283,12 +271,6 @@

P

print_time() (in module iCallSV.launchThreads)
-
- -
processor() (in module iCallSV.iCallSV_dmp_wrapper) -
-
@@ -303,6 +285,8 @@

R

ReadHotSpotFile() (in module iCallSV.checkHotSpotList)
+ +
run() (iCallSV.launchThreads.myThread method)
@@ -342,32 +326,12 @@

R

-
- -
RunJob() (in module iCallSV.iCallSV_dmp_wrapper) -
- - -
RunPerPool() (in module iCallSV.iCallSV_dmp_wrapper) -
- -

S

- - - -
-
SelectNormal() (in module iCallSV.iCallSV_dmp_wrapper) -
- - -
SetupRun() (in module iCallSV.iCallSV_dmp_wrapper) -
- -
-
sortBam() (in module iCallSV.sortbamByCoordinate)
diff --git a/docs/_build/html/iCallSV.html b/docs/_build/html/iCallSV.html index 0954e4d..bdb359e 100644 --- a/docs/_build/html/iCallSV.html +++ b/docs/_build/html/iCallSV.html @@ -141,38 +141,38 @@

Required Data Files

Configuration File Format¶

-
#~~~Template configuration file to run iCallSV~~~#
-#### Path to python executable ###
-[Python]
+
#~~~Template configuration file to run iCallSV~~~#
+#### Path to python executable ###
+[Python]
 PYTHON:
-#### Path to R executable and R Lib ###
-[R]
+#### Path to R executable and R Lib ###
+[R]
 RHOME:
 RLIB:
-#### Path to delly, bcftools executables and Version of delly (supports only 0.7.3)###
-[SVcaller]
+#### Path to delly, bcftools executables and Version of delly (supports only 0.7.3)###
+[SVcaller]
 DELLY:
 DellyVersion:
 BCFTOOLS:
-#### Path to hg19 Referece Fasta file ###
-[ReferenceFasta]
+#### Path to hg19 Referece Fasta file ###
+[ReferenceFasta]
 REFFASTA:
-#### Path to file containing regions to exclude please follow Delly documentation for this ###
-[ExcludeRegion]
+#### Path to file containing regions to exclude please follow Delly documentation for this ###
+[ExcludeRegion]
 EXREGIONS:
-#### Path to file containing regions to where lenient threshold will be used; and file containing genes to keep ###
-[HotSpotRegions]
+#### Path to file containing regions to where lenient threshold will be used; and file containing genes to keep ###
+[HotSpotRegions]
 HotspotFile:
 GenesToKeep:
-#### Path to file containing regions/genes to filter ###
-[BlackListRegions]
+#### Path to file containing regions/genes to filter ###
+[BlackListRegions]
 BlackListFile:
 BlackListGenes:
-#### Path to samtools executable ###
-[SAMTOOLS]
+#### Path to samtools executable ###
+[SAMTOOLS]
 SAMTOOLS:
-#### Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation ###
-[iAnnotateSV]
+#### Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation ###
+[iAnnotateSV]
 ANNOSV:
 GENOMEBUILD:
 DISTANCE:
@@ -181,57 +181,57 @@ 

Configuration File Format#### TargetSeqView Parameters ### +[TargetSeqView] CalculateConfidenceScore: GENOMEBUILD: ReadLength: -#### Parameters to run Delly ### -[ParametersToRunDelly] +#### Parameters to run Delly ### +[ParametersToRunDelly] MAPQ: 20 NumberOfProcessors: 4 -[ParametersToFilterDellyResults] -####Case Allele Fraction Hotspot#### +[ParametersToFilterDellyResults] +####Case Allele Fraction Hotspot#### CaseAltFreqHotspot: 0.05 -####Total Case Coverage Hotspot##### -CaseCoverageHotspot = 5 -####Control Allele Fraction Hotspot#### -ControlAltFreqHotspot = 0 -####Case Allele Fraction#### -CaseAltFreq: 0.08 -####Total Case Coverage##### -CaseCoverage = 8 -####Control Allele Fraction#### -ControlAltFreq = 0 -###Overall Supporting Read-pairs ### +####Total Case Coverage Hotspot##### +CaseCoverageHotspot = 5 +####Control Allele Fraction Hotspot#### +ControlAltFreqHotspot = 0 +####Case Allele Fraction#### +CaseAltFreq: 0.10 +####Total Case Coverage##### +CaseCoverage = 10 +####Control Allele Fraction#### +ControlAltFreq = 0 +###Overall Supporting Read-pairs ### OverallSupportingReads: 5 -###Overall Supporting Read-pairs Hotspot ### +###Overall Supporting Read-pairs Hotspot ### OverallSupportingReadsHotspot: 3 -###Overall Supporting splitreads ### +###Overall Supporting splitreads ### OverallSupportingSplitReads: 0 -###Overall Supporting splitreads Hotspot ### +###Overall Supporting splitreads Hotspot ### OverallSupportingSplitReadsHotspot: 0 -###Case Supporting Read-pairs ### +###Case Supporting Read-pairs ### CaseSupportingReads: 2 -###Case Supporting splitreads ### +###Case Supporting splitreads ### CaseSupportingSplitReads: 0 -###Case Supporting Read-pairs Hotspot ### +###Case Supporting Read-pairs Hotspot ### CaseSupportingReadsHotspot: 1 -###Case Supporting splitreads Hotspot ### +###Case Supporting splitreads Hotspot ### CaseSupportingSplitReadsHotspot: 0 -###Control Supporting Read-pairs ### -ControlSupportingReads: 5 -###Control Supporting Read-pairs Hotspot ### -ControlSupportingReadsHotspot: 5 -###Control Supporting splitreads ### -ControlSupportingSplitReads: 5 -###Control Supporting splitreads Hotspot ### -ControlSupportingSplitReadsHotspot: 5 -###Length of Structural Variant### +###Control Supporting Read-pairs ### +ControlSupportingReads: 3 +###Control Supporting Read-pairs Hotspot ### +ControlSupportingReadsHotspot: 3 +###Control Supporting splitreads ### +ControlSupportingSplitReads: 3 +###Control Supporting splitreads Hotspot ### +ControlSupportingSplitReadsHotspot: 3 +###Length of Structural Variant### LengthOfSV: 500 -###Overall Mapping Quality Threshold### +###Overall Mapping Quality Threshold### OverallMapq: 20 -###Overall Mapping Quality Threshold Hotspot### +###Overall Mapping Quality Threshold Hotspot### OverallMapqHotspot: 5

@@ -241,7 +241,7 @@

Quick Usage
python iCallSV.py -sc /path/to/template.ini -abam /path/to/casebamFile -bbam /path/to/controlbamFile -aId caseID -bId controlId -o /path/to/output/directory -op prefix_for_the_output_files
 

-
> python iCallSV.py -h
+
python iCallSV.py -h
 
 usage: iCallSV.py [-h] [-v] [-V] -sc config.ini -abam caseBAMFile.bam -bbam
                   controlBAMFile.bam -aId caseID -bId controlID -o
@@ -286,8 +286,10 @@ 

Quick Usage

Utilities¶

+
+

Running iCallSV on MSK-IMPACT Pools¶

This is only for MSK-IMPACT internal samples

-
> python iCallSV_dmp_wrapper.py -h
+
python iCallSV_dmp_wrapper.py -h
 
 usage: iCallSV_dmp_wrapper.py [options]
 
@@ -318,8 +320,56 @@ 

Utilities +

Taking the iCallSV and chechking for processed transcript/cDNA in samples¶

+
python check_cDNA_contamination.py -h
+usage: check_cDNA_contamination.py [options]
+
+Calculate cDNA contamination per sample based of the Structural Variants
+Pipeline result
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -v, --verbose         make lots of noise [default]
+  -s SVfile.txt, --svFile SVfile.txt
+                        Location of the structural variant file to be used
+  -o cDNA_contamination, --outputFileName cDNA_contamination
+                        Full path name for the output file
+
+
+

+

Submodules¶

+
+

iCallSV.iCallSV module¶

+
+

iCallSV¶

+ +++ + + + + + + + + + + + +
Description:

iCallSV is a wrapper to the iCallSV package which facilitates calling structural variants from Next Generation Sequencing methods such as Illumina

+
author:

Ronak H Shah

+
copyright:
    +
  1. 2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved.
  2. +
+
license:

Apache License 2.0

+
contact:

rons.shah@gmail.com

+
+
+

iCallSV.FilterDellyCalls module¶

@@ -1078,207 +1128,11 @@

filterAnnotatedSV -

iCallSV.iCallSV module¶

-
-

iCallSV¶

- --- - - - - - - - - - - - -
Description:

iCallSV is a wrapper to the iCallSV package which facilitates calling structural variants from Next Generation Sequencing methods such as Illumina

-
author:

Ronak H Shah

-
copyright:
    -
  1. 2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved.
  2. -
-
license:

Apache License 2.0

-
contact:

rons.shah@gmail.com

-
-
-

-
-

iCallSV.iCallSV_dmp_wrapper module¶

-
-

iCallSV_dmp_wrapper¶

- --- - - - - - - - - - - - - - - -
Description:

iCallSV is a wrapper to run the iCallSV package on MSKCC data

-
author:

Ronak H Shah

-
copyright:
    -
  1. 2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved.
  2. -
-
license:

Apache License 2.0

-
contact:

rons.shah@gmail.com

-
deffield updated:
 

Updated

-
-
-
-iCallSV.iCallSV_dmp_wrapper.RunJob(cmd)[source]¶
-

Given a command run the job.

- --- - - - - - - - -
Parameters:cmd (str) – str of command to be run on the local machine
Returns:None
Return type:None
-
- -
-
-iCallSV.iCallSV_dmp_wrapper.RunPerPool(titleFile, outdir, HSmetricsFileList, bamFileList, args)[source]¶
-

This will run the pool to be analyzed.

- --- - - - - - - - -
Parameters:
    -
  • titleFile (str) – str of meta information file
  • -
  • outdir (str) – str of output directory
  • -
  • HSmetricsFileList (list) – list of picard hsmetrics files
  • -
  • bamFileList (list) – list of bam files
  • -
  • args (Namespace) – Namespace of args to get other variables
  • -
-
Returns:

None

-
Return type:

None

-
-
- -
-
-iCallSV.iCallSV_dmp_wrapper.SelectNormal(normal, poolnormal)[source]¶
-

Select the best possible normal.

- --- - - - - - - - -
Parameters:
    -
  • normal (str) – str of match normal
  • -
  • poolnormal (str) – str of pool normal
  • -
-
Returns:

str with decision whether to run matched or unmatched

-
Return type:

str

-
-
- -
-
-iCallSV.iCallSV_dmp_wrapper.SetupRun(poolName, args)[source]¶
-

This will setup the run to be analyzed.

- --- - - - - - - - -
Parameters:
    -
  • poolName (str) – str of pool to be analyzed
  • -
  • args (Namespace) – Namespace of args to get other variables
  • -
-
Returns:

Multiple objects

-
Return type:

list

-
-
- -
-
-iCallSV.iCallSV_dmp_wrapper.getSubDirs(dirLocation)[source]¶
-

Get all sub directories.

- --- - - - - - - - -
Parameters:dirLocation (str) – str of directory location
Returns:list of all sub directories
Return type:list
-
- -
-
-iCallSV.iCallSV_dmp_wrapper.main()[source]¶
-
- -
-
-iCallSV.iCallSV_dmp_wrapper.processor(i, jobqueue)[source]¶
-

Operate on a jobqueue.

- --- - - - - - - - -
Parameters:
    -
  • i (int) – count of the job
  • -
  • jobqueue (Namespace) – Namespace for jobqueue
  • -
-
Returns:

None

-
Return type:

None

-
-
- +
+

iCallSV.utilities.iCallSV_dmp_wrapper module¶

+
+

iCallSV.utilities.check_cDNA_contamination module¶

iCallSV.launchThreads module¶

@@ -1547,8 +1401,16 @@

Table Of Contents

  • Required Data Files
  • Configuration File Format
  • Quick Usage
  • -
  • Utilities
  • +
  • Utilities +
  • Submodules
  • -
  • iCallSV.iCallSV module -
  • -
  • iCallSV.iCallSV_dmp_wrapper module -
  • +
  • iCallSV.utilities.iCallSV_dmp_wrapper module
  • +
  • iCallSV.utilities.check_cDNA_contamination module
  • iCallSV.launchThreads module
  • iCallSV.launch_FilterDellyCalls module
  •     iCallSV.iCallSV
        - iCallSV.iCallSV_dmp_wrapper -
        diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index aa3553c..1dd2aa7 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:46,filenames:["iCallSV","index"],objects:{"":{iCallSV:[0,0,0,"-"]},"iCallSV.FilterDellyCalls":{GetCaseFlag:[0,1,1,""],GetControlFlag:[0,1,1,""],GetFilteredRecords:[0,1,1,""],run:[0,1,1,""]},"iCallSV.Run_Delly":{run:[0,1,1,""]},"iCallSV.Run_iAnnotateSV":{run:[0,1,1,""]},"iCallSV.Run_samblaster":{run:[0,1,1,""]},"iCallSV.Run_targetSeqView":{run:[0,1,1,""]},"iCallSV.checkBlackList":{CheckIfItIsBlacklisted:[0,1,1,""],ReadBlackListFile:[0,1,1,""]},"iCallSV.checkHotSpotList":{CheckIfItIsHotspot:[0,1,1,""],ReadHotSpotFile:[0,1,1,""]},"iCallSV.checkparameters":{checkDellyAnalysisType:[0,1,1,""],checkDir:[0,1,1,""],checkEmpty:[0,1,1,""],checkFile:[0,1,1,""],checkInt:[0,1,1,""]},"iCallSV.combineVCF":{run:[0,1,1,""]},"iCallSV.dellyVcf2Tab":{vcf2tab:[0,1,1,""]},"iCallSV.dellyVcf2targetSeqView":{Convert2targetSeqView:[0,1,1,""]},"iCallSV.filterAnnotatedSV":{checkBlackListGene:[0,1,1,""],checkEventInIntronFlag:[0,1,1,""],checkGeneListToKeep:[0,1,1,""],run:[0,1,1,""]},"iCallSV.iCallSV_dmp_wrapper":{RunJob:[0,1,1,""],RunPerPool:[0,1,1,""],SelectNormal:[0,1,1,""],SetupRun:[0,1,1,""],getSubDirs:[0,1,1,""],main:[0,1,1,""],processor:[0,1,1,""]},"iCallSV.launchThreads":{myThread:[0,2,1,""],print_time:[0,1,1,""]},"iCallSV.launchThreads.myThread":{run:[0,3,1,""]},"iCallSV.launch_FilterDellyCalls":{launch_filterdellycalls_for_different_analysis_type:[0,1,1,""]},"iCallSV.launch_Run_Delly":{launch_delly_for_different_analysis_type:[0,1,1,""]},"iCallSV.make_analysis_dir":{makeOutputDir:[0,1,1,""]},"iCallSV.makebamindex":{MakeIndex:[0,1,1,""]},"iCallSV.mergeFinalFiles":{run:[0,1,1,""]},"iCallSV.sortbamByCoordinate":{sortBam:[0,1,1,""]},"iCallSV.sortbamByReadName":{sortBam:[0,1,1,""]},iCallSV:{FilterDellyCalls:[0,0,0,"-"],Run_Delly:[0,0,0,"-"],Run_iAnnotateSV:[0,0,0,"-"],Run_samblaster:[0,0,0,"-"],Run_targetSeqView:[0,0,0,"-"],checkBlackList:[0,0,0,"-"],checkHotSpotList:[0,0,0,"-"],checkparameters:[0,0,0,"-"],combineVCF:[0,0,0,"-"],dellyVcf2Tab:[0,0,0,"-"],dellyVcf2targetSeqView:[0,0,0,"-"],filterAnnotatedSV:[0,0,0,"-"],iCallSV:[0,0,0,"-"],iCallSV_dmp_wrapper:[0,0,0,"-"],launchThreads:[0,0,0,"-"],launch_FilterDellyCalls:[0,0,0,"-"],launch_Run_Delly:[0,0,0,"-"],make_analysis_dir:[0,0,0,"-"],makebamindex:[0,0,0,"-"],mergeFinalFiles:[0,0,0,"-"],sortbamByCoordinate:[0,0,0,"-"],sortbamByReadName:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"boolean":0,"case":0,"class":0,"default":0,"final":0,"float":0,"function":0,"int":0,"public":1,"return":0,"short":1,"true":0,abam:0,abber:0,abov:0,affect:0,aid:0,align:0,alk:0,all:0,allel:0,altern:0,altratio:0,analysi:0,analysistyp:0,analyz:0,ani:0,annosv:0,annot:0,annotab:0,apach:[0,1],arg:0,argument:0,author:[0,1],bam:0,bamfil:0,bamfilelist:0,bamfilepath:0,bamloc:0,base:0,basi:0,bbam:0,bcftool:0,behind:1,best:0,bid:0,biopython:0,black:0,blacklist:0,blacklistfil:0,blacklistgen:0,blacklistgenesfil:0,blacklistregion:0,blacklistregionsfil:[],bool:0,both:1,braf:0,breakpoint:0,build:0,calculateconfidencescor:0,call:[0,1],cancer:0,canonicaltranscriptfil:0,captur:1,casealtfreq:0,casealtfreqhotspot:0,casebam:0,casebamfil:0,casecoverag:0,casecoveragehotspot:0,casedr:0,casedv:0,caseid:0,caserr:0,caserv:0,casesupportingread:0,casesupportingreadshotspot:0,casesupportingsplitread:0,casesupportingsplitreadshotspot:0,casetotalcount:0,casetotalcounthotspot:0,ccontrolaltfreq:0,censu:0,center:0,check:0,checkblacklistgen:0,checkdellyanalysistyp:0,checkdir:0,checkempti:0,checkeventinintronflag:0,checkfil:0,checkgenelisttokeep:0,checkifitisblacklist:0,checkifitishotspot:0,checkint:0,chr1:0,chr2:0,chr:0,chromosom:0,cite:1,clin:0,cmd:0,cnot4:0,code:1,com:[0,1],combin:0,combinedvcf:0,command:[0,1],compat:0,condit:0,conf:0,confid:0,config:0,configur:[],conftab:0,contact:[0,1],contain:0,control:0,controlaltfreq:0,controlaltfreqhotspot:0,controlbam:0,controlbamfil:0,controldr:0,controldv:0,controlid:0,controlrr:0,controlrv:0,controlsupportingread:0,controlsupportingreadshotspot:0,controlsupportingsplitread:0,controlsupportingsplitreadshotspot:0,convert2targetseqview:0,convert:0,coordin:0,copyright:0,cosmic:0,cosmiccensu:0,cosmicfil:0,count:0,counter:0,coverag:0,creat:0,custom:1,cutoff:0,data:[],databas:0,debug:0,decemb:0,decis:0,deffield:0,del:0,del_vcf:0,delai:0,delet:0,delimit:0,delli:0,delly2:1,dellyvari:0,dellyvarialbl:0,dellyvers:0,describ:1,descript:0,design:1,dgvannot:0,dgvfile:0,dict:0,dir:0,direct:0,directori:0,dirloc:0,discord:0,discordantfilenam:0,distanc:0,distribut:0,dna:1,document:0,download:[],dup:0,dup_vcf:0,duplic:0,either:0,end:0,event:0,exampl:0,exclud:0,excluderegion:0,execut:0,exist:0,exit:0,exom:1,express:0,exregion:0,extens:0,extent:0,extract:0,facilit:0,fals:0,fasta:0,file:[],filetocheck:0,filter:0,first:0,flaot:0,fof:0,folder:0,folderlist:0,foldertocheck:0,follow:0,format:[],fraction:0,framework:1,frequenc:0,full:0,gene1:0,gene2:0,gene:0,genenam:0,gener:[0,1],genestoinclud:0,genestokeep:0,genestokeepfil:0,genom:0,genomebuild:0,get:0,getcaseflag:0,getcontrolflag:0,getfilteredrecord:0,getsubdir:0,git:[],github:1,give:0,given:0,gmail:[0,1],have:0,header:0,help:0,hg18:0,hg19:0,hg38:0,hospotfil:0,hot:0,hotspot:0,hotspotdict:0,hotspotfil:0,hotspotgen:0,hotspotregion:0,hsmetric:0,hsmetricsfilelist:0,http:[0,1],human:0,hybrid:1,iannotatesv:0,icallsvconf:0,icsv:0,illumina:[0,1],imag:0,impact:0,impli:0,imprecis:0,includ:1,index:[0,1],indic:[],inform:0,ini:0,input:0,inputbam:0,inputtabfil:0,inputtxt:0,inputvcf:0,insid:0,instal:0,intern:0,intron:0,inv:0,inv_vcf:0,invers:0,job:0,jobqueu:0,just:0,keep:0,keepgen:0,kept:0,ketter:0,kind:0,latest:1,launch:0,launch_delly_for_different_analysis_typ:0,launch_filterdellycalls_for_different_analysis_typ:0,length:0,lengthofsv:0,lenient:0,level:0,lib:0,librari:1,licens:[0,1],linc00486:0,line:[0,1],list:0,local:0,locat:0,lot:0,machin:0,made:0,main:0,make:0,makeindex:0,makeoutputdir:0,manuscript:1,map:0,mapq:0,mapqhotspot:0,master:0,match:0,memori:0,merg:0,messag:0,meta:0,method:0,msk:0,mskcc:0,multipl:0,mythread:0,name:0,namespac:0,need:[],neg:0,next:[0,1],node:0,nois:0,none:0,normal:0,now:1,number:0,numberofprocessor:0,object:0,onli:0,oper:0,option:0,order:0,org:0,other:0,our:1,outdir:0,outprefix:0,output:0,outputbamnam:0,outputdir:0,outputfilenam:0,outputprefix:0,outsvfil:0,outsvfilenam:0,overal:0,overallmapq:0,overallmapqhotspot:0,overallsupportingread:0,overallsupportingreadshotspot:0,overallsupportingsplitread:0,overallsupportingsplitreadshotspot:0,packag:[],page:1,pair:0,panda:0,panel:1,parallel:0,paramet:0,parameterstofilterdellyresult:0,parameterstorundelli:0,part:[0,1],pass:0,path:0,per:0,pesupport:0,pesupportcas:0,pesupportcontrol:0,pesupporthotspot:0,pesupporthotspotcas:0,pesupporthotspotcontrol:0,picard:0,platform:1,pleas:[0,1],pool:0,poolnam:0,poolnorm:0,posit:0,possibl:0,precis:0,preciseflag:0,prefix:0,prefix_for_the_output_fil:0,present:0,print_tim:0,probabl:0,process:1,processor:0,program:0,publish:1,pyhton:0,pysam:0,python:[0,1],pyvcf:0,qclocat:0,qsub:0,qsubpath:0,qualiti:0,queue:0,read:[0,1],readblacklistfil:0,readcount:0,readhotspotfil:0,readlength:0,readthedoc:1,record:0,refer:0,referec:0,referencefasta:0,reffasta:0,region:0,remov:0,repeat:0,repeatregionannot:0,repeatregionfil:0,repeset:0,report:0,repres:0,reserv:0,result:0,rhome:0,rhshah:1,right:0,rlib:0,rlocat:0,ron:[0,1],ronak:[0,1],run:0,runjob:0,runperpool:0,sam:0,samblast:0,same:0,sampl:0,samplebamnam:0,samplenam:0,sampleoutdirfordelli:0,samplesplitbamnam:0,samtool:0,scene:1,score:0,script:0,search:[0,1],second:0,select:0,selectnorm:0,separ:0,sequenc:[0,1],set:0,setup:0,setuprun:0,sge:0,shah:[0,1],should:0,show:0,singl:0,site1:0,site2:0,site:0,sloan:0,softwar:1,some:0,somepath:0,sort:0,sortbam:0,sourc:[0,1],spit:0,splice:0,split:0,splitfilenam:0,splitread:0,spot:0,srsupport:0,srsupportcas:0,srsupportcontrol:0,srsupporthotspot:0,srsupporthotspotcas:0,srsupporthotspotcontrol:0,start1:0,start2:0,start:0,str:0,sub:0,support:0,svcaller:0,svconfig:0,svfile:0,svlength:0,tab:0,tag:0,target:1,targetseqview:0,tell:0,templat:0,test:0,thei:[],thi:[0,1],thread:0,threadid:0,threadnam:0,threshold:0,thresholdvari:0,time:0,titlefil:0,tool:0,toolkit:1,total:0,tra:0,tra_vcf:0,tragetseqview:0,transloc:0,tree:0,tumor:0,tumorid:0,txt:0,type:0,ucsc:0,under:0,uniprot:0,uniprotfil:0,unmatch:0,updat:0,upload:[],valu:0,varaibletocheck:0,variabl:0,variablenam:0,variabletocheck:0,variant:[0,1],variat:0,variou:0,vcf2tab:0,vcf:0,vcffile:0,verbos:0,verifi:0,version:0,warranti:0,websit:1,what:0,where:0,whether:0,which:0,whole:1,wihout:0,wiki:1,wish:0,without:0,wrapper:0,write:0,written:0,www:0,you:[0,1]},titles:["iCallSV: Structural Aberration Detection from NGS datasets","iCallSV: Structural Aberration Detection from NGS datasets"],titleterms:{aberr:[0,1],checkblacklist:0,checkhotspotlist:0,checkparamet:0,citat:1,combinevcf:0,configur:0,content:0,data:0,dataset:[0,1],dellyvcf2tab:0,dellyvcf2targetseqview:0,detect:[0,1],file:0,filterannotatedsv:0,filterdellycal:0,format:0,from:[0,1],icallsv:[0,1],icallsv_dmp_wrapp:0,indic:1,launch_filterdellycal:0,launch_run_delli:0,launchthread:0,make_analysis_dir:0,makebamindex:0,mergefinalfil:0,modul:0,packag:0,quick:0,requir:0,run_delli:0,run_iannot:0,run_iannotatesv:0,run_samblast:0,run_targetseqview:0,sortbambycoordin:0,sortbambyreadnam:0,structur:[0,1],submodul:0,tabl:1,usag:0,util:0}}) \ No newline at end of file +Search.setIndex({envversion:46,filenames:["iCallSV","index"],objects:{"":{iCallSV:[0,0,0,"-"]},"iCallSV.FilterDellyCalls":{GetCaseFlag:[0,1,1,""],GetControlFlag:[0,1,1,""],GetFilteredRecords:[0,1,1,""],run:[0,1,1,""]},"iCallSV.Run_Delly":{run:[0,1,1,""]},"iCallSV.Run_iAnnotateSV":{run:[0,1,1,""]},"iCallSV.Run_samblaster":{run:[0,1,1,""]},"iCallSV.Run_targetSeqView":{run:[0,1,1,""]},"iCallSV.checkBlackList":{CheckIfItIsBlacklisted:[0,1,1,""],ReadBlackListFile:[0,1,1,""]},"iCallSV.checkHotSpotList":{CheckIfItIsHotspot:[0,1,1,""],ReadHotSpotFile:[0,1,1,""]},"iCallSV.checkparameters":{checkDellyAnalysisType:[0,1,1,""],checkDir:[0,1,1,""],checkEmpty:[0,1,1,""],checkFile:[0,1,1,""],checkInt:[0,1,1,""]},"iCallSV.combineVCF":{run:[0,1,1,""]},"iCallSV.dellyVcf2Tab":{vcf2tab:[0,1,1,""]},"iCallSV.dellyVcf2targetSeqView":{Convert2targetSeqView:[0,1,1,""]},"iCallSV.filterAnnotatedSV":{checkBlackListGene:[0,1,1,""],checkEventInIntronFlag:[0,1,1,""],checkGeneListToKeep:[0,1,1,""],run:[0,1,1,""]},"iCallSV.launchThreads":{myThread:[0,2,1,""],print_time:[0,1,1,""]},"iCallSV.launchThreads.myThread":{run:[0,3,1,""]},"iCallSV.launch_FilterDellyCalls":{launch_filterdellycalls_for_different_analysis_type:[0,1,1,""]},"iCallSV.launch_Run_Delly":{launch_delly_for_different_analysis_type:[0,1,1,""]},"iCallSV.make_analysis_dir":{makeOutputDir:[0,1,1,""]},"iCallSV.makebamindex":{MakeIndex:[0,1,1,""]},"iCallSV.mergeFinalFiles":{run:[0,1,1,""]},"iCallSV.sortbamByCoordinate":{sortBam:[0,1,1,""]},"iCallSV.sortbamByReadName":{sortBam:[0,1,1,""]},iCallSV:{FilterDellyCalls:[0,0,0,"-"],Run_Delly:[0,0,0,"-"],Run_iAnnotateSV:[0,0,0,"-"],Run_samblaster:[0,0,0,"-"],Run_targetSeqView:[0,0,0,"-"],checkBlackList:[0,0,0,"-"],checkHotSpotList:[0,0,0,"-"],checkparameters:[0,0,0,"-"],combineVCF:[0,0,0,"-"],dellyVcf2Tab:[0,0,0,"-"],dellyVcf2targetSeqView:[0,0,0,"-"],filterAnnotatedSV:[0,0,0,"-"],iCallSV:[0,0,0,"-"],launchThreads:[0,0,0,"-"],launch_FilterDellyCalls:[0,0,0,"-"],launch_Run_Delly:[0,0,0,"-"],make_analysis_dir:[0,0,0,"-"],makebamindex:[0,0,0,"-"],mergeFinalFiles:[0,0,0,"-"],sortbamByCoordinate:[0,0,0,"-"],sortbamByReadName:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},terms:{"boolean":0,"case":0,"class":0,"default":0,"final":0,"float":0,"function":0,"int":0,"public":1,"return":0,"short":1,"true":0,abam:0,abber:0,abov:0,affect:0,aid:0,align:0,alk:0,all:0,allel:0,altern:0,altratio:0,analysi:0,analysistyp:0,analyz:0,ani:0,annosv:0,annot:0,annotab:0,apach:[0,1],arg:0,argument:0,author:[0,1],bam:0,bamfil:0,bamfilelist:[],bamfilepath:0,bamloc:0,base:0,basi:0,bbam:0,bcftool:0,behind:1,best:[],bid:0,biopython:0,black:0,blacklist:0,blacklistfil:0,blacklistgen:0,blacklistgenesfil:0,blacklistregion:0,blacklistregionsfil:[],bool:0,both:1,braf:0,breakpoint:0,build:0,calcul:0,calculateconfidencescor:0,call:[0,1],cancer:0,canonicaltranscriptfil:0,captur:1,casealtfreq:0,casealtfreqhotspot:0,casebam:0,casebamfil:0,casecoverag:0,casecoveragehotspot:0,casedr:0,casedv:0,caseid:0,caserr:0,caserv:0,casesupportingread:0,casesupportingreadshotspot:0,casesupportingsplitread:0,casesupportingsplitreadshotspot:0,casetotalcount:0,casetotalcounthotspot:0,ccontrolaltfreq:0,cdna_contamin:0,censu:0,center:0,check:0,check_cdna_contamin:[],checkblacklistgen:0,checkdellyanalysistyp:0,checkdir:0,checkempti:0,checkeventinintronflag:0,checkfil:0,checkgenelisttokeep:0,checkifitisblacklist:0,checkifitishotspot:0,checkint:0,chr1:0,chr2:0,chr:0,chromosom:0,cite:1,clin:0,cmd:[],cnot4:0,code:1,com:[0,1],combin:0,combinedvcf:0,command:1,compat:0,condit:0,conf:0,confid:0,config:0,configur:[],conftab:0,contact:[0,1],contain:0,contamin:0,control:0,controlaltfreq:0,controlaltfreqhotspot:0,controlbam:0,controlbamfil:0,controldr:0,controldv:0,controlid:0,controlrr:0,controlrv:0,controlsupportingread:0,controlsupportingreadshotspot:0,controlsupportingsplitread:0,controlsupportingsplitreadshotspot:0,convert2targetseqview:0,convert:0,coordin:0,copyright:0,cosmic:0,cosmiccensu:0,cosmicfil:0,count:[],counter:0,coverag:0,creat:0,custom:1,cutoff:0,data:[],databas:0,debug:0,decemb:0,decis:[],deffield:[],del:0,del_vcf:0,delai:0,delet:0,delimit:0,delli:0,delly2:1,dellyvari:0,dellyvarialbl:0,dellyvers:0,describ:1,descript:0,design:1,dgvannot:0,dgvfile:0,dict:0,dir:0,direct:0,directori:0,dirloc:[],discord:0,discordantfilenam:0,distanc:0,distribut:0,dna:1,document:0,download:[],dup:0,dup_vcf:0,duplic:0,either:0,end:0,event:0,exampl:0,exclud:0,excluderegion:0,execut:0,exist:0,exit:0,exom:1,express:0,exregion:0,extens:0,extent:0,extract:0,facilit:0,fals:0,fasta:0,file:[],filetocheck:0,filter:0,first:0,flaot:0,fof:0,folder:0,folderlist:0,foldertocheck:0,follow:0,format:[],fraction:0,framework:1,frequenc:0,full:0,gene1:0,gene2:0,gene:0,genenam:0,gener:[0,1],genestoinclud:0,genestokeep:0,genestokeepfil:0,genom:0,genomebuild:0,get:0,getcaseflag:0,getcontrolflag:0,getfilteredrecord:0,getsubdir:[],git:[],github:1,give:0,given:0,gmail:[0,1],have:0,header:0,help:0,hg18:0,hg19:0,hg38:0,hospotfil:0,hot:0,hotspot:0,hotspotdict:0,hotspotfil:0,hotspotgen:0,hotspotregion:0,hsmetric:[],hsmetricsfilelist:[],http:[0,1],human:0,hybrid:1,iannotatesv:0,icallsvconf:0,icsv:0,illumina:[0,1],imag:0,impact:[],impli:0,imprecis:0,includ:1,index:[0,1],indic:[],inform:[],ini:0,input:0,inputbam:0,inputtabfil:0,inputtxt:0,inputvcf:0,insid:0,instal:0,intern:0,intron:0,inv:0,inv_vcf:0,invers:0,job:[],jobqueu:[],just:0,keep:0,keepgen:0,kept:0,ketter:0,kind:0,latest:1,launch:0,launch_delly_for_different_analysis_typ:0,launch_filterdellycalls_for_different_analysis_typ:0,length:0,lengthofsv:0,lenient:0,level:0,lib:0,librari:1,licens:[0,1],linc00486:0,line:[0,1],list:0,local:[],locat:0,lot:0,machin:[],made:0,main:0,make:0,makeindex:0,makeoutputdir:0,manuscript:1,map:0,mapq:0,mapqhotspot:0,master:0,match:[],memori:0,merg:0,messag:0,meta:[],method:0,msk:[],mskcc:[],multipl:0,mythread:0,name:0,namespac:0,need:[],neg:0,next:[0,1],node:0,nois:0,none:0,normal:0,now:1,number:0,numberofprocessor:0,object:0,onli:0,oper:[],option:0,order:0,org:0,other:0,our:1,outdir:0,outprefix:0,output:0,outputbamnam:0,outputdir:0,outputfilenam:0,outputprefix:0,outsvfil:0,outsvfilenam:0,overal:0,overallmapq:0,overallmapqhotspot:0,overallsupportingread:0,overallsupportingreadshotspot:0,overallsupportingsplitread:0,overallsupportingsplitreadshotspot:0,packag:[],page:1,pair:0,panda:0,panel:1,parallel:0,paramet:0,parameterstofilterdellyresult:0,parameterstorundelli:0,part:[0,1],pass:0,path:0,per:0,pesupport:0,pesupportcas:0,pesupportcontrol:0,pesupporthotspot:0,pesupporthotspotcas:0,pesupporthotspotcontrol:0,picard:[],pipelin:0,platform:1,pleas:[0,1],pool:[],poolnam:[],poolnorm:[],posit:0,possibl:[],precis:0,preciseflag:0,prefix:0,prefix_for_the_output_fil:0,present:0,print_tim:0,probabl:0,process:[],processor:[],program:0,publish:1,pyhton:0,pysam:0,python:[0,1],pyvcf:0,qclocat:0,qsub:0,qsubpath:0,qualiti:0,queue:0,read:[0,1],readblacklistfil:0,readcount:0,readhotspotfil:0,readlength:0,readthedoc:1,record:0,refer:0,referec:0,referencefasta:0,reffasta:0,region:0,remov:0,repeat:0,repeatregionannot:0,repeatregionfil:0,repeset:0,report:0,repres:0,reserv:0,result:0,rhome:0,rhshah:1,right:0,rlib:0,rlocat:0,ron:[0,1],ronak:[0,1],run:[],runjob:[],runperpool:[],sam:0,samblast:0,same:0,sampl:[],samplebamnam:0,samplenam:0,sampleoutdirfordelli:0,samplesplitbamnam:0,samtool:0,scene:1,score:0,script:0,search:[0,1],second:0,select:0,selectnorm:[],separ:0,sequenc:[0,1],set:0,setup:[],setuprun:[],sge:0,shah:[0,1],should:0,show:0,singl:0,site1:0,site2:0,site:0,sloan:0,softwar:1,some:0,somepath:0,sort:0,sortbam:0,sourc:[0,1],spit:0,splice:0,split:0,splitfilenam:0,splitread:0,spot:0,srsupport:0,srsupportcas:0,srsupportcontrol:0,srsupporthotspot:0,srsupporthotspotcas:0,srsupporthotspotcontrol:0,start1:0,start2:0,start:0,str:0,sub:0,support:0,svcaller:0,svconfig:0,svfile:0,svlength:0,tab:0,tag:0,target:1,targetseqview:0,tell:0,templat:0,test:0,thei:[],thi:[0,1],thread:0,threadid:0,threadnam:0,threshold:0,thresholdvari:0,time:0,titlefil:[],tool:0,toolkit:1,total:0,tra:0,tra_vcf:0,tragetseqview:0,transloc:0,tree:0,tumor:0,tumorid:0,txt:0,type:0,ucsc:0,under:0,uniprot:0,uniprotfil:0,unmatch:[],updat:[],upload:[],valu:0,varaibletocheck:0,variabl:0,variablenam:0,variabletocheck:0,variant:[0,1],variat:0,variou:0,vcf2tab:0,vcf:0,vcffile:0,verbos:0,verifi:0,version:0,warranti:0,websit:1,what:0,where:0,whether:[],which:0,whole:1,wihout:0,wiki:1,wish:0,without:0,wrapper:0,write:0,written:0,www:0,you:[0,1]},titles:["iCallSV: Structural Aberration Detection from NGS datasets","iCallSV: Structural Aberration Detection from NGS datasets"],titleterms:{aberr:[0,1],cdna:0,chechk:0,check_cdna_contamin:0,checkblacklist:0,checkhotspotlist:0,checkparamet:0,citat:1,combinevcf:0,configur:0,content:0,data:0,dataset:[0,1],dellyvcf2tab:0,dellyvcf2targetseqview:0,detect:[0,1],file:0,filterannotatedsv:0,filterdellycal:0,format:0,from:[0,1],icallsv:[0,1],icallsv_dmp_wrapp:0,impact:0,indic:1,launch_filterdellycal:0,launch_run_delli:0,launchthread:0,make_analysis_dir:0,makebamindex:0,mergefinalfil:0,modul:0,msk:0,packag:0,pool:0,process:0,quick:0,requir:0,run:0,run_delli:0,run_iannot:0,run_iannotatesv:0,run_samblast:0,run_targetseqview:0,sampl:0,sortbambycoordin:0,sortbambyreadnam:0,structur:[0,1],submodul:0,tabl:1,take:0,transcript:0,usag:0,util:0}}) \ No newline at end of file diff --git a/docs/_build/json/_sources/iCallSV.txt b/docs/_build/json/_sources/iCallSV.txt index 210668a..8b8d8a8 100644 --- a/docs/_build/json/_sources/iCallSV.txt +++ b/docs/_build/json/_sources/iCallSV.txt @@ -57,7 +57,7 @@ This files are given in the ``data`` folder inside iCallSV. Configuration File Format ========================= -.. code-block:: ini +.. code-block:: sh #~~~Template configuration file to run iCallSV~~~# #### Path to python executable ### @@ -116,9 +116,9 @@ Configuration File Format ####Control Allele Fraction Hotspot#### ControlAltFreqHotspot = 0 ####Case Allele Fraction#### - CaseAltFreq: 0.08 + CaseAltFreq: 0.10 ####Total Case Coverage##### - CaseCoverage = 8 + CaseCoverage = 10 ####Control Allele Fraction#### ControlAltFreq = 0 ###Overall Supporting Read-pairs ### @@ -138,13 +138,13 @@ Configuration File Format ###Case Supporting splitreads Hotspot ### CaseSupportingSplitReadsHotspot: 0 ###Control Supporting Read-pairs ### - ControlSupportingReads: 5 + ControlSupportingReads: 3 ###Control Supporting Read-pairs Hotspot ### - ControlSupportingReadsHotspot: 5 + ControlSupportingReadsHotspot: 3 ###Control Supporting splitreads ### - ControlSupportingSplitReads: 5 + ControlSupportingSplitReads: 3 ###Control Supporting splitreads Hotspot ### - ControlSupportingSplitReadsHotspot: 5 + ControlSupportingSplitReadsHotspot: 3 ###Length of Structural Variant### LengthOfSV: 500 ###Overall Mapping Quality Threshold### @@ -162,9 +162,10 @@ Quick Usage python iCallSV.py -sc /path/to/template.ini -abam /path/to/casebamFile -bbam /path/to/controlbamFile -aId caseID -bId controlId -o /path/to/output/directory -op prefix_for_the_output_files + .. code-block:: sh - > python iCallSV.py -h + python iCallSV.py -h usage: iCallSV.py [-h] [-v] [-V] -sc config.ini -abam caseBAMFile.bam -bbam controlBAMFile.bam -aId caseID -bId controlID -o @@ -207,11 +208,15 @@ Quick Usage Utilities ========= + +Running iCallSV on MSK-IMPACT Pools +----------------------------------- + **This is only for MSK-IMPACT internal samples** .. code-block:: sh - > python iCallSV_dmp_wrapper.py -h + python iCallSV_dmp_wrapper.py -h usage: iCallSV_dmp_wrapper.py [options] @@ -239,11 +244,39 @@ Utilities -v, --verbose make lots of noise [default] -o /somepath/output, --outDir /somepath/output Full Path to the output dir. - + + +Taking the iCallSV and chechking for processed transcript/cDNA in samples +------------------------------------------------------------------------- + +.. code-block:: sh + + python check_cDNA_contamination.py -h + usage: check_cDNA_contamination.py [options] + + Calculate cDNA contamination per sample based of the Structural Variants + Pipeline result + + optional arguments: + -h, --help show this help message and exit + -v, --verbose make lots of noise [default] + -s SVfile.txt, --svFile SVfile.txt + Location of the structural variant file to be used + -o cDNA_contamination, --outputFileName cDNA_contamination + Full path name for the output file + Submodules ========== +iCallSV.iCallSV module +---------------------- + +.. automodule:: iCallSV.iCallSV + :members: + :undoc-members: + :show-inheritance: + iCallSV.FilterDellyCalls module ------------------------------- @@ -340,18 +373,19 @@ iCallSV.filterAnnotatedSV module :undoc-members: :show-inheritance: -iCallSV.iCallSV module ----------------------- -.. automodule:: iCallSV.iCallSV +iCallSV.utilities.iCallSV_dmp_wrapper module +-------------------------------------------- + +.. automodule:: iCallSV.utilities.iCallSV_dmp_wrapper :members: :undoc-members: :show-inheritance: -iCallSV.iCallSV_dmp_wrapper module ----------------------------------- +iCallSV.utilities.check_cDNA_contamination module +------------------------------------------------- -.. automodule:: iCallSV.iCallSV_dmp_wrapper +.. automodule:: iCallSV.utilities.check_cDNA_contamination :members: :undoc-members: :show-inheritance: diff --git a/docs/_build/json/environment.pickle b/docs/_build/json/environment.pickle index 1ff1efe85ee27b97fccd28fa0e61a51336a47898..e8a4e8d306a19ae3ca2bb35e5d94c8ef0f8e1e40 100644 GIT binary patch delta 26293 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 delta 25564 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 yFY-MnY30=~32f7t\n

    iCallSV: Structural Aberration Detection from NGS datasets\u00b6

    \n\n
    \n

    Required Packages\u00b6

    \n

    We require that you install:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    pandas:v0.16.2
    biopython:v1.65
    pysam:v0.8.4
    pyvcf:0.6.7
    Delly:v0.7.3
    targetSeqView:master
    iAnnotateSV:v1.0.5
    \n
    \n
    \n

    Required Data Files\u00b6

    \n

    This files are given in the data folder inside iCallSV.

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n
    BlackListFile:

    (blacklist.txt) Tab-delimited file wihout header having black listed regions in order:

    \n
    \n

    chromosome 1, breakpoint 1, chromosome 2, breakpoint 2

    \n
    \n\n\n\n\n\n\n\n
    Example:7 140498077 5 175998094
    \n
    BlackListGenes:

    (blacklistgenes.txt) Gene listed one per line wihout header that are to be removed

    \n\n\n\n\n\n\n\n
    Example:

    LINC00486

    \n

    CNOT4

    \n
    \n
    HotspotFile:

    (hotspotgenes.txt) Tab-delimited file wihout header having hotspot regions in order:

    \n
    \n

    chromosome, start, end, name

    \n
    \n\n\n\n\n\n\n\n
    Example:2 29416089 30143525 ALK
    \n
    GenesToKeep:

    (genesToInclude.txt) Gene listed one per line wihout header that are to be kept

    \n\n\n\n\n\n\n\n
    Example:

    ALK

    \n

    BRAF

    \n
    \n
    \n
    \n
    \n

    Configuration File Format\u00b6

    \n
    #~~~Template configuration file to run iCallSV~~~#\n#### Path to python executable ###\n[Python]\nPYTHON:\n#### Path to R executable and R Lib ###\n[R]\nRHOME:\nRLIB:\n#### Path to delly, bcftools executables and Version of delly (supports only 0.7.3)###\n[SVcaller]\nDELLY:\nDellyVersion:\nBCFTOOLS:\n#### Path to hg19 Referece Fasta file ###\n[ReferenceFasta]\nREFFASTA:\n#### Path to file containing regions to exclude please follow Delly documentation for this ###\n[ExcludeRegion]\nEXREGIONS:\n#### Path to file containing regions to where lenient threshold will be used; and file containing genes to keep ###\n[HotSpotRegions]\nHotspotFile:\nGenesToKeep:\n#### Path to file containing regions/genes to filter ###\n[BlackListRegions]\nBlackListFile:\nBlackListGenes:\n#### Path to samtools executable ###\n[SAMTOOLS]\nSAMTOOLS:\n#### Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation ###\n[iAnnotateSV]\nANNOSV:\nGENOMEBUILD:\nDISTANCE:\nCANONICALTRANSCRIPTFILE:\nUNIPROTFILE:\nCosmicCensus:\nRepeatRegionAnnotation:\nDGvAnnotations:\n#### TargetSeqView Parameters ###\n[TargetSeqView]\nCalculateConfidenceScore:\nGENOMEBUILD:\nReadLength:\n#### Parameters to run Delly ###\n[ParametersToRunDelly]\nMAPQ: 20\nNumberOfProcessors: 4\n[ParametersToFilterDellyResults]\n####Case Allele Fraction Hotspot####\nCaseAltFreqHotspot: 0.05\n####Total Case Coverage Hotspot#####\nCaseCoverageHotspot = 5\n####Control Allele Fraction Hotspot####\nControlAltFreqHotspot = 0\n####Case Allele Fraction####\nCaseAltFreq: 0.08\n####Total Case Coverage#####\nCaseCoverage = 8\n####Control Allele Fraction####\nControlAltFreq = 0\n###Overall Supporting Read-pairs ###\nOverallSupportingReads: 5\n###Overall Supporting Read-pairs Hotspot ###\nOverallSupportingReadsHotspot: 3\n###Overall Supporting splitreads ###\nOverallSupportingSplitReads: 0\n###Overall Supporting splitreads Hotspot ###\nOverallSupportingSplitReadsHotspot: 0\n###Case Supporting Read-pairs ###\nCaseSupportingReads: 2\n###Case Supporting splitreads ###\nCaseSupportingSplitReads: 0\n###Case Supporting Read-pairs Hotspot ###\nCaseSupportingReadsHotspot: 1\n###Case Supporting splitreads Hotspot ###\nCaseSupportingSplitReadsHotspot: 0\n###Control Supporting Read-pairs ###\nControlSupportingReads: 5\n###Control Supporting Read-pairs Hotspot ###\nControlSupportingReadsHotspot: 5\n###Control Supporting splitreads ###\nControlSupportingSplitReads: 5\n###Control Supporting splitreads Hotspot ###\nControlSupportingSplitReadsHotspot: 5\n###Length of Structural Variant###\nLengthOfSV: 500\n###Overall Mapping Quality Threshold###\nOverallMapq: 20\n###Overall Mapping Quality Threshold Hotspot###\nOverallMapqHotspot: 5\n
    \n
    \n
    \n
    \n

    Quick Usage\u00b6

    \n
    python iCallSV.py -sc /path/to/template.ini -abam /path/to/casebamFile -bbam /path/to/controlbamFile -aId caseID -bId controlId -o /path/to/output/directory -op prefix_for_the_output_files\n
    \n
    \n
    > python iCallSV.py -h\n\nusage: iCallSV.py [-h] [-v] [-V] -sc config.ini -abam caseBAMFile.bam -bbam\n                  controlBAMFile.bam -aId caseID -bId controlID -o\n                  /somepath/output -op TumorID\n\niCallSV.iCallSV -- wrapper to run iCallSV package\n\n  Created by Ronak H Shah on 2015-03-30.\n  Copyright 2015-2016 Ronak H Shah. All rights reserved.\n\n  Licensed under the Apache License 2.0\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Distributed on an "AS IS" basis without warranties\n  or conditions of any kind, either express or implied.\n\nUSAGE\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --verbose         set verbosity level [default: True]\n  -V, --version         show program's version number and exit\n  -sc config.ini, --svConfig config.ini\n                        Full path to the structural variant configuration\n  -abam caseBAMFile.bam, --caseBam caseBAMFile.bam\n                        Full path to the case bam file\n  -bbam controlBAMFile.bam, --controlBam controlBAMFile.bam\n                        Full path to the control bam file\n  -aId caseID, --caseId caseID\n                        Id of the case to be analyzed, this will be the sub-\n                        folder\n  -bId controlID, --controlId controlID\n                        Id of the control to be used, this will be used for\n                        filtering variants\n  -o /somepath/output, --outDir /somepath/output\n                        Full Path to the output dir.\n  -op TumorID, --outPrefix TumorID\n                        Id of the Tumor bam file which will be used as the\n                        prefix for output files\n
    \n
    \n
    \n
    \n

    Utilities\u00b6

    \n

    This is only for MSK-IMPACT internal samples

    \n
    > python iCallSV_dmp_wrapper.py -h\n\nusage: iCallSV_dmp_wrapper.py [options]\n\nRun iCallSV on selected pools using MSK data\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -fl folders.fof, --folderList folders.fof\n                        Full path folders file of files.\n  -qc /some/path/qcLocation, --qcLocation /some/path/qcLocation\n                        Full path qc files.\n  -b /some/path/bamlocation, --bamLocation /some/path/bamlocation\n                        Full path bam files.\n  -P /somepath/python, --python /somepath/python\n                        Full path Pyhton executables.\n  -icsv /somepath/iCallSV.py, --iCallSV /somepath/iCallSV.py\n                        Full path iCallSV.py executables.\n  -conf /somepath/template.ini, --iCallSVconf /somepath/template.ini\n                        Full path configuration file to run iCallSV\n  -q all.q or clin.q, --queue all.q or clin.q\n                        Name of the SGE queue\n  -qsub /somepath/qsub, --qsubPath /somepath/qsub\n                        Full Path to the qsub executables of SGE.\n  -t 5, --threads 5     Number of Threads to be used to run iCallSV\n  -v, --verbose         make lots of noise [default]\n  -o /somepath/output, --outDir /somepath/output\n                        Full Path to the output dir.\n
    \n
    \n
    \n
    \n

    Submodules\u00b6

    \n
    \n

    iCallSV.FilterDellyCalls module\u00b6

    \n
    \n

    FilterDellyCalls\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will filter calls made by Delly which are in a VCF format
    \n
    \n
    \niCallSV.FilterDellyCalls.GetCaseFlag(caseDR, caseDV, preciseFlag, caseRR, caseRV, caseAltFreq, caseTotalCount)[source]\u00b6
    \n

    This will check if the case sample passes or not

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • caseDR (int) – int representing number of reference reads for case reported by delly
    • \n
    • caseDV (int) – int representing number of variant reads for case reported by delly
    • \n
    • preciseFlag (str) – str representing if an event is precise or imprecise
    • \n
    • caseRR (int) – int representing number of split reference reads for case reported by delly
    • \n
    • caseRV (int) – int representing number of split variant reads for case reported by delly
    • \n
    • caseAltFreq (float) – float representing altratio threshold for case
    • \n
    • caseTotalCount (int) – int repeseting readcount threshold for case
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.FilterDellyCalls.GetControlFlag(controlDR, controlDV, preciseFlag, controlRR, controlRV, controlAltFreq)[source]\u00b6
    \n

    This will check if the control sample passes or not

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • controlDR (int) – int representing number of reference reads for control reported by delly
    • \n
    • controlDV (int) – int representing number of variant reads for control reported by delly
    • \n
    • preciseFlag (str) – str representing if an event is precise or imprecise
    • \n
    • controlRR (int) – int representing number of split reference reads for control reported by delly
    • \n
    • controlRV (int) – int representing number of split variant reads for control reported by delly
    • \n
    • controlAltFreq (float) – float representing altratio threshold for control
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.FilterDellyCalls.GetFilteredRecords(dellyVarialbles, thresholdVariables, hotspotDict, blacklist)[source]\u00b6
    \n

    This will Filter one record at a time

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • dellyVariables (str) – str having all delly variables separated by ”,”
    • \n
    • thresholdVariables (str) – str having all delly threshold variables separated by ”,”
    • \n
    • hotspotDict (dict) – A dict containing hotspot regions
    • \n
    • blacklist (list) – A list containing blacklist regions
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.FilterDellyCalls.run(inputVcf, outputDir, controlId, caseID, hotspotFile, blacklistFile, svlength, mapq, mapqHotspot, caseAltFreqHotspot, caseTotalCountHotspot, controlAltFreqHotspot, caseAltFreq, caseTotalCount, controlAltFreq, peSupport, srSupport, peSupportHotspot, srSupportHotspot, peSupportCase, srSupportCase, peSupportHotspotCase, srSupportHotspotCase, peSupportControl, srSupportControl, peSupportHotspotControl, srSupportHotspotControl, verbose)[source]\u00b6
    \n

    ``main:``Filter calls made by Delly which are in a VCF format

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • inputVcf (str) – Input VCF file name with path
    • \n
    • outputDir (str) – Output directory
    • \n
    • controlId (str) – Control Sample ID (Should be part of Sample Name in VCF)
    • \n
    • caseID (str) – Case Sample ID (Should be part of Sample Name in VCF)
    • \n
    • hospotFile (str) – List of Genes that have Hotspot Structural Variants (Tab-delimited Format without header:chr start end geneName).
    • \n
    • blacklistFile (str) – List of Genes that have blacklist of Structural Variants (Tab-delimited Format without header:chr start1 chr2 start2; where chr1==chr2, end==start2).
    • \n
    • caseAltFreq (float) – Alternate Allele Frequency threshold for case
    • \n
    • caseTotalCount (int) – Total ReadCount threshold for case
    • \n
    • ccontrolAltFreq (flaot) – Alternate Allele Frequency threshold for control
    • \n
    • peSupport (int) – overall pair-end read support threshold for the event
    • \n
    • srSupport (int) – overall split-reads support threshold for the event
    • \n
    • peSupportHotspot (int) – overall pair-end read support threshold for the event in hot-spot region
    • \n
    • srSupportHotspot (int) – overall split-reads support threshold for the event in hot-spot region
    • \n
    • peSupportCase (int) – pair-end read support threshold for the event in the Case sample
    • \n
    • srSupportCase (int) – split-reads support threshold for the event in the Case sample
    • \n
    • peSupportHotspotCase (int) – pair-end read support threshold for the event in hot-spot region for the Case sample
    • \n
    • srSupportHotspotCase (int) – split-reads support threshold for the event in hot-spot region for the Case sample
    • \n
    • peSupportControl (int) – pair-end read support threshold for the event in the Control sample
    • \n
    • srSupportControl (int) – split-reads support threshold for the event in the Control sample
    • \n
    • peSupportHotspotControl (int) – pair-end read support threshold for the event in hot-spot region for the Control sample
    • \n
    • srSupportHotspotControl (int) – split-reads support threshold for the event in hot-spot region for the Control sample
    • \n
    • svlength (int) – length of the structural variants
    • \n
    • mapq (int) – overall mapping quality
    • \n
    • mapqHotspot (int) – mapping quality for hot-spots
    • \n
    \n
    Returns:

    A str name of filtered vcf file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_Delly module\u00b6

    \n
    \n

    Run_Delly\u00b6

    \n\n\n\n\n\n\n\n
    Description:Runs the delly program on case and control bam file to give its results
    \n
    \n
    \niCallSV.Run_Delly.run(delly, version, bcftools, analysisType, reference, controlBam, caseBam, caseId, mapq, excludeRegions, outputdir, verbose, debug)[source]\u00b6
    \n

    This will Runs the delly program on case and control bam file to give its\nresults.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • delly (str) – Path to delly executables (0.7.3 or above)
    • \n
    • bcftools (str) – Path to bcftools executables (1.3.1 or above)
    • \n
    • type (str) – What ot run in delly, DEL:Deletion, DUP: Duplication,TRA:Translocation, INV:Inversion
    • \n
    • reference (str) – Reference Genome that was used to align the reads.
    • \n
    • controlBam (str) – Path to control/normal bam file
    • \n
    • caseBam (str) – Path to case/tumor bam file
    • \n
    • controlID (str) – Id of the control/normal sample
    • \n
    • caseID (str) – Id of the case/tumor sample
    • \n
    • mapq (int) – mapping quality cutoff for delly
    • \n
    • excludeRegions (str) – Regions to be excluded for calling structural variation.
    • \n
    • outputdir (str) – directory for the output of delly
    • \n
    • debug (bool) – If you just wish to test what we will do
    • \n
    \n
    Returns:

    str of the output vcf

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_iAnnotateSV module\u00b6

    \n
    \n

    Run_iAnnotate\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will run iAnnotateSV package
    \n
    \n
    \niCallSV.Run_iAnnotateSV.run(python, iAnnotateSV, build, distance, canonicalTranscriptFile, uniprotFile, cosmicFile, repeatregionFile, dgvFile, inputTabFile, outputPrefix, outputDir)[source]\u00b6
    \n

    This module will run iAnnotateSV package.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • python (str) – Location for the python executable.
    • \n
    • iAnnotateSV (str) – Location of the wrapper iAnnotateSV package (iAnnotateSV.py)
    • \n
    • build (str) – Which human reference file to be used, hg18,hg19 or hg38
    • \n
    • inputTabFile (str) – Tab-Delimited Input FIle compatible with iAnnotateSV package.
    • \n
    • outputPrefix (str) – Prefix of the output files/DIR with Annotations and images
    • \n
    • outputDir (str) – Name of the output directory where the outputPrefix will be written
    • \n
    • uniprotFile (str) – Location for ucsc uniprot file
    • \n
    • cosmicFile (str) – Location for cosmic census file
    • \n
    • repeatregionFile (str) – Location for repeat region file
    • \n
    • dgvFile (str) – Location for database of Genomic Variants file
    • \n
    \n
    Returns:

    str of the output file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_samblaster module\u00b6

    \n
    \n

    Run_samblaster\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will run samblaster for extracting discordant and spit reads in sam format
    \n
    \n
    \niCallSV.Run_samblaster.run(samtools, samblaster, bamFile, discordantFileName, splitFileName, outputDir)[source]\u00b6
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_targetSeqView module\u00b6

    \n
    \n

    Run_targetSeqView\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will run targetSeqView
    \n
    \n
    \niCallSV.Run_targetSeqView.run(RLocation, targetSeqView, nodes, bamFilePath, svFile, build, readLength, outputDir, outsvFileName)[source]\u00b6
    \n

    This module will run targetSeqView.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • RLocation (str) – Location of the R executable (>3.1.2).
    • \n
    • targetSeqView (str) – Location of R script that will run tragetSeqView
    • \n
    • nodes (int) – Number of parallel nodes for running targetSeqView
    • \n
    • bamFile (str) – Location of the bamFile which has the structural variant events.
    • \n
    • svFile (str) – targetSeqView compatible input structural variant file.
    • \n
    • build (str) – Which human reference file to be used, hg18,hg19 or hg38
    • \n
    • readLength (int) – Sequencing Read Length (101)
    • \n
    • outputDir (str) – Directory for output files
    • \n
    • outsvFile (str) – Name of the output structural variant file that has added confidence score to it.
    • \n
    \n
    Returns:

    str of the output file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.checkBlackList module\u00b6

    \n
    \n

    checkBlackList\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will read the Black List file and tell if and event is blacklisted or not
    \n
    \n
    \niCallSV.checkBlackList.CheckIfItIsBlacklisted(chr1, start1, chr2, start2, blacklist, extention)[source]\u00b6
    \n

    Check if coordinate are present in the blacklist region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • chr1 (str) – str of the breakpoint in first chromosome
    • \n
    • start1 (int) – int of the start location of the breakpoint in first chromosome
    • \n
    • chr2 (str) – str of the breakpoint in second chromosome
    • \n
    • start2 (int) – int of the start location of the breakpoint in second chromosome
    • \n
    • blacklist (list) – A list containing black listed regions
    • \n
    • extension (int) – an value for search in positive and negative direction of the start1 and start2 location
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.checkBlackList.ReadBlackListFile(BlackListFile)[source]\u00b6
    \n

    Read the blacklist region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:BlackListFile (str) – str of file to be read.
    Returns:A list containing black listed regions.
    Return type:list.
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.checkHotSpotList module\u00b6

    \n
    \n

    checkHotSpotList\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will read the hotspot file and tell if it is a hotspot or not
    \n
    \n
    \niCallSV.checkHotSpotList.CheckIfItIsHotspot(chr1, start1, chr2, start2, hotspotDict)[source]\u00b6
    \n

    Check if coordinate are present in the hotspot region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • chr1 (str) – str of the breakpoint in first chromosome
    • \n
    • start1 (int) – int of the start location of the breakpoint in first chromosome
    • \n
    • chr2 (str) – str of the breakpoint in second chromosome
    • \n
    • start2 (int) – int of the start location of the breakpoint in second chromosome
    • \n
    • hotspotDict (dict) – A dict containing hotspot regions
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.checkHotSpotList.ReadHotSpotFile(HotSpotFile)[source]\u00b6
    \n

    Read the HotSpot region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:HotSpotFile (str) – str of file to be read.
    Returns:A dict containing hotspot regions
    Return type:dict
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.checkparameters module\u00b6

    \n
    \n

    checkparameters\u00b6

    \n\n\n\n\n\n\n\n
    Description:This modules checks the parameters for various type of inputs.
    \n
    \n
    \niCallSV.checkparameters.checkDellyAnalysisType(varaibleToCheck)[source]\u00b6
    \n

    Check if the variable for Delly analysis exists or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:variableToCheck (str) – check if str is DEL|DUP|INV|TRA
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkDir(folderToCheck)[source]\u00b6
    \n

    Check if the folder exists or not`

    \n

    str.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:folderToCheck (str) – Name of the folder to be checked.
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkEmpty(variableToCheck, variableName)[source]\u00b6
    \n

    Check if the variable is None or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • variableToCheck (str) – check if str is None or not
    • \n
    • variableName (str) – Name of the None object to be verified
    • \n
    \n
    Returns:

    None

    \n
    Return type:

    None

    \n
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkFile(fileToCheck)[source]\u00b6
    \n

    Check if the file exists or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:fileToCheck (str) – Name of the file to be checked.
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkInt(variableToCheck, variableName)[source]\u00b6
    \n

    Check if the variable is int or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • variableToCheck (int) – Check if it is int or not
    • \n
    • variableName (str) – Name of the int object to be verified
    • \n
    \n
    Returns:

    None

    \n
    Return type:

    None

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.combineVCF module\u00b6

    \n
    \n

    combineVCF\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will combine multiple vcf file with same headers
    \n
    \n
    \niCallSV.combineVCF.run(vcfFiles, combinedVCF, verbose)[source]\u00b6
    \n

    This will combine multiple vcf file with same headers

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • vcfFiles (list) – a list of .vcf files to be combined
    • \n
    • combinedVCF (str) – str for the output of combined vcf files
    • \n
    • verbose (bool) – a boolean
    • \n
    \n
    Returns:

    A str name of combined vcf file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.dellyVcf2Tab module\u00b6

    \n
    \n

    dellyVcf2Tab\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module converts the Delly Vcf file having tumor normal, to tab-delimited format for input to iAnnotateSV
    \n
    \n
    \niCallSV.dellyVcf2Tab.vcf2tab(vcfFile, outputDir, verbose)[source]\u00b6
    \n

    This converts the Delly Vcf file having tumor normal, to tab-delimited format for input to iAnnotateSV

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • vcfFile (str) – str of vcf file to be converted
    • \n
    • outputDir (str) – str for the output directory
    • \n
    • verbose (bool) – a boolean
    • \n
    \n
    Returns:

    A str name of tab-delimited file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.dellyVcf2targetSeqView module\u00b6

    \n
    \n

    dellyVcf2targetSeqView\u00b6

    \n\n\n\n\n\n\n\n
    Description:Convert VCF to targetSeqView
    \n
    \n
    \niCallSV.dellyVcf2targetSeqView.Convert2targetSeqView(sampleName, sampleBamName, sampleSplitBamName, vcfFile, outputDir, outputFileName)[source]\u00b6
    \n

    This converts the Delly Vcf file having tumor normal, to tab-delimited format for input to targetSeqView

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • sampleName (str) – str for the name of the sample being analyzed
    • \n
    • sampleBamName (str) – str for the pair-end reads bam file
    • \n
    • sampleSplitBamName (str) – str for the split reads bam file
    • \n
    • vcfFile (str) – str of vcf file to be converted
    • \n
    • outputDir (str) – str for the output directory
    • \n
    • outputFileName (str) – str for the output File
    • \n
    \n
    Returns:

    A str name of tab-delimited file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.filterAnnotatedSV module\u00b6

    \n
    \n

    filterAnnotatedSV\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will filter calls from the merged file
    \n
    \n
    \niCallSV.filterAnnotatedSV.checkBlackListGene(gene1, gene2, blacklistGenes)[source]\u00b6
    \n

    This will check for blacklisted genes

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • gene1 (str) – str for the name of gene at breakpoint 1
    • \n
    • gene2 (str) – str for the name of gene at breakpoint 2
    • \n
    • blacklistGenes (list) – list containing blacklisted genes
    • \n
    • genesToKeepFile (str) – str for the txt file containing genes to keep
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.filterAnnotatedSV.checkEventInIntronFlag(gene1, gene2, site1, site2)[source]\u00b6
    \n

    This will Check if the event is in the intron only and not affecting\nsplicing

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • gene1 (str) – str for the name of gene at breakpoint 1
    • \n
    • gene2 (str) – str for the name of gene at breakpoint 2
    • \n
    • site1 (str) – str for the description of site in breakpoint 1
    • \n
    • site2 (str) – str for the description of site in breakpoint 2
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.filterAnnotatedSV.checkGeneListToKeep(gene1, gene2, keepGenes)[source]\u00b6
    \n
    \n\n
    \n
    \niCallSV.filterAnnotatedSV.run(inputTxt, outputDir, outPrefix, blacklistGenesFile, genesToKeepFile, verbose)[source]\u00b6
    \n

    This will filter sv calls from the final merged file.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • inputTxt (str) – str for the txt file to be filtered
    • \n
    • outputDir (str) – str for the output directory
    • \n
    • outputPrefix (str) – str prefix for the output File
    • \n
    • blacklistGenesFile (str) – str for the txt file containing blacklisted genes
    • \n
    • genesToKeepFile (str) – str for the txt file containing genes to keep
    • \n
    • verbose (bool) – a boolean
    • \n
    \n
    Returns:

    A str name of final sv file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.iCallSV module\u00b6

    \n
    \n

    iCallSV\u00b6

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    Description:

    iCallSV is a wrapper to the iCallSV package which facilitates calling structural variants from Next Generation Sequencing methods such as Illumina

    \n
    author:

    Ronak H Shah

    \n
    copyright:
      \n
    1. 2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved.
    2. \n
    \n
    license:

    Apache License 2.0

    \n
    contact:

    rons.shah@gmail.com

    \n
    \n
    \n
    \n
    \n

    iCallSV.iCallSV_dmp_wrapper module\u00b6

    \n
    \n

    iCallSV_dmp_wrapper\u00b6

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    Description:

    iCallSV is a wrapper to run the iCallSV package on MSKCC data

    \n
    author:

    Ronak H Shah

    \n
    copyright:
      \n
    1. 2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved.
    2. \n
    \n
    license:

    Apache License 2.0

    \n
    contact:

    rons.shah@gmail.com

    \n
    deffield updated:
     

    Updated

    \n
    \n
    \n
    \niCallSV.iCallSV_dmp_wrapper.RunJob(cmd)[source]\u00b6
    \n

    Given a command run the job.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:cmd (str) – str of command to be run on the local machine
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.iCallSV_dmp_wrapper.RunPerPool(titleFile, outdir, HSmetricsFileList, bamFileList, args)[source]\u00b6
    \n

    This will run the pool to be analyzed.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • titleFile (str) – str of meta information file
    • \n
    • outdir (str) – str of output directory
    • \n
    • HSmetricsFileList (list) – list of picard hsmetrics files
    • \n
    • bamFileList (list) – list of bam files
    • \n
    • args (Namespace) – Namespace of args to get other variables
    • \n
    \n
    Returns:

    None

    \n
    Return type:

    None

    \n
    \n
    \n\n
    \n
    \niCallSV.iCallSV_dmp_wrapper.SelectNormal(normal, poolnormal)[source]\u00b6
    \n

    Select the best possible normal.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • normal (str) – str of match normal
    • \n
    • poolnormal (str) – str of pool normal
    • \n
    \n
    Returns:

    str with decision whether to run matched or unmatched

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \niCallSV.iCallSV_dmp_wrapper.SetupRun(poolName, args)[source]\u00b6
    \n

    This will setup the run to be analyzed.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • poolName (str) – str of pool to be analyzed
    • \n
    • args (Namespace) – Namespace of args to get other variables
    • \n
    \n
    Returns:

    Multiple objects

    \n
    Return type:

    list

    \n
    \n
    \n\n
    \n
    \niCallSV.iCallSV_dmp_wrapper.getSubDirs(dirLocation)[source]\u00b6
    \n

    Get all sub directories.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:dirLocation (str) – str of directory location
    Returns:list of all sub directories
    Return type:list
    \n
    \n\n
    \n
    \niCallSV.iCallSV_dmp_wrapper.main()[source]\u00b6
    \n
    \n\n
    \n
    \niCallSV.iCallSV_dmp_wrapper.processor(i, jobqueue)[source]\u00b6
    \n

    Operate on a jobqueue.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • i (int) – count of the job
    • \n
    • jobqueue (Namespace) – Namespace for jobqueue
    • \n
    \n
    Returns:

    None

    \n
    Return type:

    None

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.launchThreads module\u00b6

    \n

    Created on December 21, 2015\nDescription: This module will be launching functions as threads\n@author: Ronak H Shah

    \n
    \n
    \nclass iCallSV.launchThreads.myThread(threadID, name, counter)[source]\u00b6
    \n

    Bases: threading.Thread

    \n
    \n
    \nrun()[source]\u00b6
    \n
    \n\n
    \n\n
    \n
    \niCallSV.launchThreads.print_time(threadName, delay, counter)[source]\u00b6
    \n
    \n\n
    \n
    \n

    iCallSV.launch_FilterDellyCalls module\u00b6

    \n
    \n

    launch_FilterDellyCalls\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will filter delly results and create filtered delly vcf files
    \n
    \n
    \niCallSV.launch_FilterDellyCalls.launch_filterdellycalls_for_different_analysis_type(args, config, sampleOutdirForDelly, del_vcf, dup_vcf, inv_vcf, tra_vcf)[source]\u00b6
    \n

    This will launch the filtering of delly calls in parallel.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • args (Namespace) – Namespace of args to get other variables
    • \n
    • config (Namespace) – configuration file passed to iCallSV
    • \n
    • sampleOutdirForDelly (str) – Output directory for delly vcf files.
    • \n
    • del_vcf (str) – Path to deletion based vcf file
    • \n
    • dup_vcf (str) – Path to duplication based vcf file
    • \n
    • inv_vcf (str) – Path to inversion based vcf file
    • \n
    • tra_vcf (str) – Path to translocation based vcf file
    • \n
    \n
    Returns:

    Multiple objects

    \n
    Return type:

    list

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.launch_Run_Delly module\u00b6

    \n
    \n

    launch_Run_Delly\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will be launching delly using Run_Delly
    \n
    \n
    \niCallSV.launch_Run_Delly.launch_delly_for_different_analysis_type(args, config, sampleOutdirForDelly)[source]\u00b6
    \n

    This will launch delly calls in parallel.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • args (Namespace) – Namespace of args to get other variables
    • \n
    • config (Namespace) – configuration file passed to iCallSV
    • \n
    • sampleOutdirForDelly (str) – Output directory for delly vcf files.
    • \n
    \n
    Returns:

    Multiple objects

    \n
    Return type:

    list

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.make_analysis_dir module\u00b6

    \n
    \n

    make_analysis_dir\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will make directory structure for running analysis
    \n
    \n
    \niCallSV.make_analysis_dir.makeOutputDir(args, tool)[source]\u00b6
    \n

    This will make the output directory tree.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:args (Namespace) – Namespace of args to get other variables
    Returns:Multiple objects
    Return type:list
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.makebamindex module\u00b6

    \n
    \n

    makebamindex\u00b6

    \n\n\n\n\n\n\n\n
    Description:Use PySAM to make bam index
    \n
    \n
    \niCallSV.makebamindex.MakeIndex(bamFile)[source]\u00b6
    \n

    This will make bam index if not there for a bam file using pysam.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:bamFile (str) – Path to bam file
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.mergeFinalFiles module\u00b6

    \n
    \n

    mergeFinalFiles\u00b6

    \n\n\n\n\n\n\n\n
    Description:Merge VCF, iAnnotateSV tab and targetSeqView tab file into a single tab-delimited file
    \n
    \n
    \niCallSV.mergeFinalFiles.run(aId, bId, vcfFile, annoTab, confTab, outDir, outputPrefix, verbose)[source]\u00b6
    \n

    This will Merge VCF, iAnnotateSV tab and targetSeqView tab file into a single tab-delimited file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • aId (str) – Sample ID for case that has the structural abberations
    • \n
    • bId (str) – Sample ID for control
    • \n
    • vcfFile (str) – Delly filtered and merged VCF file
    • \n
    • annoTab (str) – iAnnotateSV tab-delimited file with annotations
    • \n
    • confTab (str) – targetSeqView tab-delimited file with probability score
    • \n
    • outputDir (str) – Directory to write the output file
    • \n
    • outputPrefix (str) – Output File Prefix
    • \n
    \n
    Returns:

    str of the tab-delimited file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.sortbamByCoordinate module\u00b6

    \n
    \n

    sortbamByCoordinate\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will sort bam file by coordinate
    \n
    \n
    \niCallSV.sortbamByCoordinate.sortBam(inputBam, outputBamName, outputDir)[source]\u00b6
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.sortbamByReadName module\u00b6

    \n
    \n

    sortbamByReadName\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will sort bam file by name
    \n
    \n
    \niCallSV.sortbamByReadName.sortBam(inputBam, outputBamName, outputDir)[source]\u00b6
    \n
    \n\n
    \n
    \n
    \n

    Module contents\u00b6

    \n
    \n
    \n", "alabaster_version": "0.7.7", "display_toc": true, "title": "iCallSV: Structural Aberration Detection from NGS datasets", "sourcename": "iCallSV.txt", "customsidebar": null, "current_page_name": "iCallSV", "next": null, "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["index", "iCallSV: Structural Aberration Detection from NGS datasets", "P", "previous"]], "meta": {}, "parents": [], "sidebars": null, "toc": "\n", "prev": {"link": "../", "title": "iCallSV: Structural Aberration Detection from NGS datasets"}, "metatags": ""} \ No newline at end of file +{"body": "
    \n

    iCallSV: Structural Aberration Detection from NGS datasets\u00b6

    \n
    \n
    \n

    Required Packages\u00b6

    \n

    We require that you install:

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    pandas:v0.16.2
    biopython:v1.65
    pysam:v0.8.4
    pyvcf:0.6.7
    Delly:v0.7.3
    targetSeqView:master
    iAnnotateSV:v1.0.5
    \n
    \n
    \n

    Required Data Files\u00b6

    \n

    This files are given in the data folder inside iCallSV.

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n
    BlackListFile:

    (blacklist.txt) Tab-delimited file wihout header having black listed regions in order:

    \n
    \n

    chromosome 1, breakpoint 1, chromosome 2, breakpoint 2

    \n
    \n\n\n\n\n\n\n\n
    Example:7 140498077 5 175998094
    \n
    BlackListGenes:

    (blacklistgenes.txt) Gene listed one per line wihout header that are to be removed

    \n\n\n\n\n\n\n\n
    Example:

    LINC00486

    \n

    CNOT4

    \n
    \n
    HotspotFile:

    (hotspotgenes.txt) Tab-delimited file wihout header having hotspot regions in order:

    \n
    \n

    chromosome, start, end, name

    \n
    \n\n\n\n\n\n\n\n
    Example:2 29416089 30143525 ALK
    \n
    GenesToKeep:

    (genesToInclude.txt) Gene listed one per line wihout header that are to be kept

    \n\n\n\n\n\n\n\n
    Example:

    ALK

    \n

    BRAF

    \n
    \n
    \n
    \n
    \n

    Configuration File Format\u00b6

    \n
    #~~~Template configuration file to run iCallSV~~~#\n#### Path to python executable ###\n[Python]\nPYTHON:\n#### Path to R executable and R Lib ###\n[R]\nRHOME:\nRLIB:\n#### Path to delly, bcftools executables and Version of delly (supports only 0.7.3)###\n[SVcaller]\nDELLY:\nDellyVersion:\nBCFTOOLS:\n#### Path to hg19 Referece Fasta file ###\n[ReferenceFasta]\nREFFASTA:\n#### Path to file containing regions to exclude please follow Delly documentation for this ###\n[ExcludeRegion]\nEXREGIONS:\n#### Path to file containing regions to where lenient threshold will be used; and file containing genes to keep ###\n[HotSpotRegions]\nHotspotFile:\nGenesToKeep:\n#### Path to file containing regions/genes to filter ###\n[BlackListRegions]\nBlackListFile:\nBlackListGenes:\n#### Path to samtools executable ###\n[SAMTOOLS]\nSAMTOOLS:\n#### Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation ###\n[iAnnotateSV]\nANNOSV:\nGENOMEBUILD:\nDISTANCE:\nCANONICALTRANSCRIPTFILE:\nUNIPROTFILE:\nCosmicCensus:\nRepeatRegionAnnotation:\nDGvAnnotations:\n#### TargetSeqView Parameters ###\n[TargetSeqView]\nCalculateConfidenceScore:\nGENOMEBUILD:\nReadLength:\n#### Parameters to run Delly ###\n[ParametersToRunDelly]\nMAPQ: 20\nNumberOfProcessors: 4\n[ParametersToFilterDellyResults]\n####Case Allele Fraction Hotspot####\nCaseAltFreqHotspot: 0.05\n####Total Case Coverage Hotspot#####\nCaseCoverageHotspot = 5\n####Control Allele Fraction Hotspot####\nControlAltFreqHotspot = 0\n####Case Allele Fraction####\nCaseAltFreq: 0.10\n####Total Case Coverage#####\nCaseCoverage = 10\n####Control Allele Fraction####\nControlAltFreq = 0\n###Overall Supporting Read-pairs ###\nOverallSupportingReads: 5\n###Overall Supporting Read-pairs Hotspot ###\nOverallSupportingReadsHotspot: 3\n###Overall Supporting splitreads ###\nOverallSupportingSplitReads: 0\n###Overall Supporting splitreads Hotspot ###\nOverallSupportingSplitReadsHotspot: 0\n###Case Supporting Read-pairs ###\nCaseSupportingReads: 2\n###Case Supporting splitreads ###\nCaseSupportingSplitReads: 0\n###Case Supporting Read-pairs Hotspot ###\nCaseSupportingReadsHotspot: 1\n###Case Supporting splitreads Hotspot ###\nCaseSupportingSplitReadsHotspot: 0\n###Control Supporting Read-pairs ###\nControlSupportingReads: 3\n###Control Supporting Read-pairs Hotspot ###\nControlSupportingReadsHotspot: 3\n###Control Supporting splitreads ###\nControlSupportingSplitReads: 3\n###Control Supporting splitreads Hotspot ###\nControlSupportingSplitReadsHotspot: 3\n###Length of Structural Variant###\nLengthOfSV: 500\n###Overall Mapping Quality Threshold###\nOverallMapq: 20\n###Overall Mapping Quality Threshold Hotspot###\nOverallMapqHotspot: 5\n
    \n
    \n
    \n
    \n

    Quick Usage\u00b6

    \n
    python iCallSV.py -sc /path/to/template.ini -abam /path/to/casebamFile -bbam /path/to/controlbamFile -aId caseID -bId controlId -o /path/to/output/directory -op prefix_for_the_output_files\n
    \n
    \n
    python iCallSV.py -h\n\nusage: iCallSV.py [-h] [-v] [-V] -sc config.ini -abam caseBAMFile.bam -bbam\n                  controlBAMFile.bam -aId caseID -bId controlID -o\n                  /somepath/output -op TumorID\n\niCallSV.iCallSV -- wrapper to run iCallSV package\n\n  Created by Ronak H Shah on 2015-03-30.\n  Copyright 2015-2016 Ronak H Shah. All rights reserved.\n\n  Licensed under the Apache License 2.0\n  http://www.apache.org/licenses/LICENSE-2.0\n\n  Distributed on an "AS IS" basis without warranties\n  or conditions of any kind, either express or implied.\n\nUSAGE\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --verbose         set verbosity level [default: True]\n  -V, --version         show program's version number and exit\n  -sc config.ini, --svConfig config.ini\n                        Full path to the structural variant configuration\n  -abam caseBAMFile.bam, --caseBam caseBAMFile.bam\n                        Full path to the case bam file\n  -bbam controlBAMFile.bam, --controlBam controlBAMFile.bam\n                        Full path to the control bam file\n  -aId caseID, --caseId caseID\n                        Id of the case to be analyzed, this will be the sub-\n                        folder\n  -bId controlID, --controlId controlID\n                        Id of the control to be used, this will be used for\n                        filtering variants\n  -o /somepath/output, --outDir /somepath/output\n                        Full Path to the output dir.\n  -op TumorID, --outPrefix TumorID\n                        Id of the Tumor bam file which will be used as the\n                        prefix for output files\n
    \n
    \n
    \n
    \n

    Utilities\u00b6

    \n
    \n

    Running iCallSV on MSK-IMPACT Pools\u00b6

    \n

    This is only for MSK-IMPACT internal samples

    \n
    python iCallSV_dmp_wrapper.py -h\n\nusage: iCallSV_dmp_wrapper.py [options]\n\nRun iCallSV on selected pools using MSK data\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -fl folders.fof, --folderList folders.fof\n                        Full path folders file of files.\n  -qc /some/path/qcLocation, --qcLocation /some/path/qcLocation\n                        Full path qc files.\n  -b /some/path/bamlocation, --bamLocation /some/path/bamlocation\n                        Full path bam files.\n  -P /somepath/python, --python /somepath/python\n                        Full path Pyhton executables.\n  -icsv /somepath/iCallSV.py, --iCallSV /somepath/iCallSV.py\n                        Full path iCallSV.py executables.\n  -conf /somepath/template.ini, --iCallSVconf /somepath/template.ini\n                        Full path configuration file to run iCallSV\n  -q all.q or clin.q, --queue all.q or clin.q\n                        Name of the SGE queue\n  -qsub /somepath/qsub, --qsubPath /somepath/qsub\n                        Full Path to the qsub executables of SGE.\n  -t 5, --threads 5     Number of Threads to be used to run iCallSV\n  -v, --verbose         make lots of noise [default]\n  -o /somepath/output, --outDir /somepath/output\n                        Full Path to the output dir.\n
    \n
    \n
    \n
    \n

    Taking the iCallSV and chechking for processed transcript/cDNA in samples\u00b6

    \n
    python check_cDNA_contamination.py -h\nusage: check_cDNA_contamination.py [options]\n\nCalculate cDNA contamination per sample based of the Structural Variants\nPipeline result\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -v, --verbose         make lots of noise [default]\n  -s SVfile.txt, --svFile SVfile.txt\n                        Location of the structural variant file to be used\n  -o cDNA_contamination, --outputFileName cDNA_contamination\n                        Full path name for the output file\n
    \n
    \n
    \n
    \n
    \n

    Submodules\u00b6

    \n
    \n

    iCallSV.iCallSV module\u00b6

    \n
    \n

    iCallSV\u00b6

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    Description:

    iCallSV is a wrapper to the iCallSV package which facilitates calling structural variants from Next Generation Sequencing methods such as Illumina

    \n
    author:

    Ronak H Shah

    \n
    copyright:
      \n
    1. 2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved.
    2. \n
    \n
    license:

    Apache License 2.0

    \n
    contact:

    rons.shah@gmail.com

    \n
    \n
    \n
    \n
    \n

    iCallSV.FilterDellyCalls module\u00b6

    \n
    \n

    FilterDellyCalls\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will filter calls made by Delly which are in a VCF format
    \n
    \n
    \niCallSV.FilterDellyCalls.GetCaseFlag(caseDR, caseDV, preciseFlag, caseRR, caseRV, caseAltFreq, caseTotalCount)[source]\u00b6
    \n

    This will check if the case sample passes or not

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • caseDR (int) – int representing number of reference reads for case reported by delly
    • \n
    • caseDV (int) – int representing number of variant reads for case reported by delly
    • \n
    • preciseFlag (str) – str representing if an event is precise or imprecise
    • \n
    • caseRR (int) – int representing number of split reference reads for case reported by delly
    • \n
    • caseRV (int) – int representing number of split variant reads for case reported by delly
    • \n
    • caseAltFreq (float) – float representing altratio threshold for case
    • \n
    • caseTotalCount (int) – int repeseting readcount threshold for case
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.FilterDellyCalls.GetControlFlag(controlDR, controlDV, preciseFlag, controlRR, controlRV, controlAltFreq)[source]\u00b6
    \n

    This will check if the control sample passes or not

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • controlDR (int) – int representing number of reference reads for control reported by delly
    • \n
    • controlDV (int) – int representing number of variant reads for control reported by delly
    • \n
    • preciseFlag (str) – str representing if an event is precise or imprecise
    • \n
    • controlRR (int) – int representing number of split reference reads for control reported by delly
    • \n
    • controlRV (int) – int representing number of split variant reads for control reported by delly
    • \n
    • controlAltFreq (float) – float representing altratio threshold for control
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.FilterDellyCalls.GetFilteredRecords(dellyVarialbles, thresholdVariables, hotspotDict, blacklist)[source]\u00b6
    \n

    This will Filter one record at a time

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • dellyVariables (str) – str having all delly variables separated by ”,”
    • \n
    • thresholdVariables (str) – str having all delly threshold variables separated by ”,”
    • \n
    • hotspotDict (dict) – A dict containing hotspot regions
    • \n
    • blacklist (list) – A list containing blacklist regions
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.FilterDellyCalls.run(inputVcf, outputDir, controlId, caseID, hotspotFile, blacklistFile, svlength, mapq, mapqHotspot, caseAltFreqHotspot, caseTotalCountHotspot, controlAltFreqHotspot, caseAltFreq, caseTotalCount, controlAltFreq, peSupport, srSupport, peSupportHotspot, srSupportHotspot, peSupportCase, srSupportCase, peSupportHotspotCase, srSupportHotspotCase, peSupportControl, srSupportControl, peSupportHotspotControl, srSupportHotspotControl, verbose)[source]\u00b6
    \n

    ``main:``Filter calls made by Delly which are in a VCF format

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • inputVcf (str) – Input VCF file name with path
    • \n
    • outputDir (str) – Output directory
    • \n
    • controlId (str) – Control Sample ID (Should be part of Sample Name in VCF)
    • \n
    • caseID (str) – Case Sample ID (Should be part of Sample Name in VCF)
    • \n
    • hospotFile (str) – List of Genes that have Hotspot Structural Variants (Tab-delimited Format without header:chr start end geneName).
    • \n
    • blacklistFile (str) – List of Genes that have blacklist of Structural Variants (Tab-delimited Format without header:chr start1 chr2 start2; where chr1==chr2, end==start2).
    • \n
    • caseAltFreq (float) – Alternate Allele Frequency threshold for case
    • \n
    • caseTotalCount (int) – Total ReadCount threshold for case
    • \n
    • ccontrolAltFreq (flaot) – Alternate Allele Frequency threshold for control
    • \n
    • peSupport (int) – overall pair-end read support threshold for the event
    • \n
    • srSupport (int) – overall split-reads support threshold for the event
    • \n
    • peSupportHotspot (int) – overall pair-end read support threshold for the event in hot-spot region
    • \n
    • srSupportHotspot (int) – overall split-reads support threshold for the event in hot-spot region
    • \n
    • peSupportCase (int) – pair-end read support threshold for the event in the Case sample
    • \n
    • srSupportCase (int) – split-reads support threshold for the event in the Case sample
    • \n
    • peSupportHotspotCase (int) – pair-end read support threshold for the event in hot-spot region for the Case sample
    • \n
    • srSupportHotspotCase (int) – split-reads support threshold for the event in hot-spot region for the Case sample
    • \n
    • peSupportControl (int) – pair-end read support threshold for the event in the Control sample
    • \n
    • srSupportControl (int) – split-reads support threshold for the event in the Control sample
    • \n
    • peSupportHotspotControl (int) – pair-end read support threshold for the event in hot-spot region for the Control sample
    • \n
    • srSupportHotspotControl (int) – split-reads support threshold for the event in hot-spot region for the Control sample
    • \n
    • svlength (int) – length of the structural variants
    • \n
    • mapq (int) – overall mapping quality
    • \n
    • mapqHotspot (int) – mapping quality for hot-spots
    • \n
    \n
    Returns:

    A str name of filtered vcf file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_Delly module\u00b6

    \n
    \n

    Run_Delly\u00b6

    \n\n\n\n\n\n\n\n
    Description:Runs the delly program on case and control bam file to give its results
    \n
    \n
    \niCallSV.Run_Delly.run(delly, version, bcftools, analysisType, reference, controlBam, caseBam, caseId, mapq, excludeRegions, outputdir, verbose, debug)[source]\u00b6
    \n

    This will Runs the delly program on case and control bam file to give its\nresults.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • delly (str) – Path to delly executables (0.7.3 or above)
    • \n
    • bcftools (str) – Path to bcftools executables (1.3.1 or above)
    • \n
    • type (str) – What ot run in delly, DEL:Deletion, DUP: Duplication,TRA:Translocation, INV:Inversion
    • \n
    • reference (str) – Reference Genome that was used to align the reads.
    • \n
    • controlBam (str) – Path to control/normal bam file
    • \n
    • caseBam (str) – Path to case/tumor bam file
    • \n
    • controlID (str) – Id of the control/normal sample
    • \n
    • caseID (str) – Id of the case/tumor sample
    • \n
    • mapq (int) – mapping quality cutoff for delly
    • \n
    • excludeRegions (str) – Regions to be excluded for calling structural variation.
    • \n
    • outputdir (str) – directory for the output of delly
    • \n
    • debug (bool) – If you just wish to test what we will do
    • \n
    \n
    Returns:

    str of the output vcf

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_iAnnotateSV module\u00b6

    \n
    \n

    Run_iAnnotate\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will run iAnnotateSV package
    \n
    \n
    \niCallSV.Run_iAnnotateSV.run(python, iAnnotateSV, build, distance, canonicalTranscriptFile, uniprotFile, cosmicFile, repeatregionFile, dgvFile, inputTabFile, outputPrefix, outputDir)[source]\u00b6
    \n

    This module will run iAnnotateSV package.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • python (str) – Location for the python executable.
    • \n
    • iAnnotateSV (str) – Location of the wrapper iAnnotateSV package (iAnnotateSV.py)
    • \n
    • build (str) – Which human reference file to be used, hg18,hg19 or hg38
    • \n
    • inputTabFile (str) – Tab-Delimited Input FIle compatible with iAnnotateSV package.
    • \n
    • outputPrefix (str) – Prefix of the output files/DIR with Annotations and images
    • \n
    • outputDir (str) – Name of the output directory where the outputPrefix will be written
    • \n
    • uniprotFile (str) – Location for ucsc uniprot file
    • \n
    • cosmicFile (str) – Location for cosmic census file
    • \n
    • repeatregionFile (str) – Location for repeat region file
    • \n
    • dgvFile (str) – Location for database of Genomic Variants file
    • \n
    \n
    Returns:

    str of the output file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_samblaster module\u00b6

    \n
    \n

    Run_samblaster\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will run samblaster for extracting discordant and spit reads in sam format
    \n
    \n
    \niCallSV.Run_samblaster.run(samtools, samblaster, bamFile, discordantFileName, splitFileName, outputDir)[source]\u00b6
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.Run_targetSeqView module\u00b6

    \n
    \n

    Run_targetSeqView\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will run targetSeqView
    \n
    \n
    \niCallSV.Run_targetSeqView.run(RLocation, targetSeqView, nodes, bamFilePath, svFile, build, readLength, outputDir, outsvFileName)[source]\u00b6
    \n

    This module will run targetSeqView.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • RLocation (str) – Location of the R executable (>3.1.2).
    • \n
    • targetSeqView (str) – Location of R script that will run tragetSeqView
    • \n
    • nodes (int) – Number of parallel nodes for running targetSeqView
    • \n
    • bamFile (str) – Location of the bamFile which has the structural variant events.
    • \n
    • svFile (str) – targetSeqView compatible input structural variant file.
    • \n
    • build (str) – Which human reference file to be used, hg18,hg19 or hg38
    • \n
    • readLength (int) – Sequencing Read Length (101)
    • \n
    • outputDir (str) – Directory for output files
    • \n
    • outsvFile (str) – Name of the output structural variant file that has added confidence score to it.
    • \n
    \n
    Returns:

    str of the output file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.checkBlackList module\u00b6

    \n
    \n

    checkBlackList\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will read the Black List file and tell if and event is blacklisted or not
    \n
    \n
    \niCallSV.checkBlackList.CheckIfItIsBlacklisted(chr1, start1, chr2, start2, blacklist, extention)[source]\u00b6
    \n

    Check if coordinate are present in the blacklist region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • chr1 (str) – str of the breakpoint in first chromosome
    • \n
    • start1 (int) – int of the start location of the breakpoint in first chromosome
    • \n
    • chr2 (str) – str of the breakpoint in second chromosome
    • \n
    • start2 (int) – int of the start location of the breakpoint in second chromosome
    • \n
    • blacklist (list) – A list containing black listed regions
    • \n
    • extension (int) – an value for search in positive and negative direction of the start1 and start2 location
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.checkBlackList.ReadBlackListFile(BlackListFile)[source]\u00b6
    \n

    Read the blacklist region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:BlackListFile (str) – str of file to be read.
    Returns:A list containing black listed regions.
    Return type:list.
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.checkHotSpotList module\u00b6

    \n
    \n

    checkHotSpotList\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will read the hotspot file and tell if it is a hotspot or not
    \n
    \n
    \niCallSV.checkHotSpotList.CheckIfItIsHotspot(chr1, start1, chr2, start2, hotspotDict)[source]\u00b6
    \n

    Check if coordinate are present in the hotspot region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • chr1 (str) – str of the breakpoint in first chromosome
    • \n
    • start1 (int) – int of the start location of the breakpoint in first chromosome
    • \n
    • chr2 (str) – str of the breakpoint in second chromosome
    • \n
    • start2 (int) – int of the start location of the breakpoint in second chromosome
    • \n
    • hotspotDict (dict) – A dict containing hotspot regions
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.checkHotSpotList.ReadHotSpotFile(HotSpotFile)[source]\u00b6
    \n

    Read the HotSpot region file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:HotSpotFile (str) – str of file to be read.
    Returns:A dict containing hotspot regions
    Return type:dict
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.checkparameters module\u00b6

    \n
    \n

    checkparameters\u00b6

    \n\n\n\n\n\n\n\n
    Description:This modules checks the parameters for various type of inputs.
    \n
    \n
    \niCallSV.checkparameters.checkDellyAnalysisType(varaibleToCheck)[source]\u00b6
    \n

    Check if the variable for Delly analysis exists or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:variableToCheck (str) – check if str is DEL|DUP|INV|TRA
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkDir(folderToCheck)[source]\u00b6
    \n

    Check if the folder exists or not`

    \n

    str.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:folderToCheck (str) – Name of the folder to be checked.
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkEmpty(variableToCheck, variableName)[source]\u00b6
    \n

    Check if the variable is None or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • variableToCheck (str) – check if str is None or not
    • \n
    • variableName (str) – Name of the None object to be verified
    • \n
    \n
    Returns:

    None

    \n
    Return type:

    None

    \n
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkFile(fileToCheck)[source]\u00b6
    \n

    Check if the file exists or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:fileToCheck (str) – Name of the file to be checked.
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \niCallSV.checkparameters.checkInt(variableToCheck, variableName)[source]\u00b6
    \n

    Check if the variable is int or not`

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • variableToCheck (int) – Check if it is int or not
    • \n
    • variableName (str) – Name of the int object to be verified
    • \n
    \n
    Returns:

    None

    \n
    Return type:

    None

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.combineVCF module\u00b6

    \n
    \n

    combineVCF\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will combine multiple vcf file with same headers
    \n
    \n
    \niCallSV.combineVCF.run(vcfFiles, combinedVCF, verbose)[source]\u00b6
    \n

    This will combine multiple vcf file with same headers

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • vcfFiles (list) – a list of .vcf files to be combined
    • \n
    • combinedVCF (str) – str for the output of combined vcf files
    • \n
    • verbose (bool) – a boolean
    • \n
    \n
    Returns:

    A str name of combined vcf file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.dellyVcf2Tab module\u00b6

    \n
    \n

    dellyVcf2Tab\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module converts the Delly Vcf file having tumor normal, to tab-delimited format for input to iAnnotateSV
    \n
    \n
    \niCallSV.dellyVcf2Tab.vcf2tab(vcfFile, outputDir, verbose)[source]\u00b6
    \n

    This converts the Delly Vcf file having tumor normal, to tab-delimited format for input to iAnnotateSV

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • vcfFile (str) – str of vcf file to be converted
    • \n
    • outputDir (str) – str for the output directory
    • \n
    • verbose (bool) – a boolean
    • \n
    \n
    Returns:

    A str name of tab-delimited file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.dellyVcf2targetSeqView module\u00b6

    \n
    \n

    dellyVcf2targetSeqView\u00b6

    \n\n\n\n\n\n\n\n
    Description:Convert VCF to targetSeqView
    \n
    \n
    \niCallSV.dellyVcf2targetSeqView.Convert2targetSeqView(sampleName, sampleBamName, sampleSplitBamName, vcfFile, outputDir, outputFileName)[source]\u00b6
    \n

    This converts the Delly Vcf file having tumor normal, to tab-delimited format for input to targetSeqView

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • sampleName (str) – str for the name of the sample being analyzed
    • \n
    • sampleBamName (str) – str for the pair-end reads bam file
    • \n
    • sampleSplitBamName (str) – str for the split reads bam file
    • \n
    • vcfFile (str) – str of vcf file to be converted
    • \n
    • outputDir (str) – str for the output directory
    • \n
    • outputFileName (str) – str for the output File
    • \n
    \n
    Returns:

    A str name of tab-delimited file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.filterAnnotatedSV module\u00b6

    \n
    \n

    filterAnnotatedSV\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will filter calls from the merged file
    \n
    \n
    \niCallSV.filterAnnotatedSV.checkBlackListGene(gene1, gene2, blacklistGenes)[source]\u00b6
    \n

    This will check for blacklisted genes

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • gene1 (str) – str for the name of gene at breakpoint 1
    • \n
    • gene2 (str) – str for the name of gene at breakpoint 2
    • \n
    • blacklistGenes (list) – list containing blacklisted genes
    • \n
    • genesToKeepFile (str) – str for the txt file containing genes to keep
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.filterAnnotatedSV.checkEventInIntronFlag(gene1, gene2, site1, site2)[source]\u00b6
    \n

    This will Check if the event is in the intron only and not affecting\nsplicing

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • gene1 (str) – str for the name of gene at breakpoint 1
    • \n
    • gene2 (str) – str for the name of gene at breakpoint 2
    • \n
    • site1 (str) – str for the description of site in breakpoint 1
    • \n
    • site2 (str) – str for the description of site in breakpoint 2
    • \n
    \n
    Returns:

    A boolean tag indicating True or False

    \n
    Return type:

    bool

    \n
    \n
    \n\n
    \n
    \niCallSV.filterAnnotatedSV.checkGeneListToKeep(gene1, gene2, keepGenes)[source]\u00b6
    \n
    \n\n
    \n
    \niCallSV.filterAnnotatedSV.run(inputTxt, outputDir, outPrefix, blacklistGenesFile, genesToKeepFile, verbose)[source]\u00b6
    \n

    This will filter sv calls from the final merged file.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • inputTxt (str) – str for the txt file to be filtered
    • \n
    • outputDir (str) – str for the output directory
    • \n
    • outputPrefix (str) – str prefix for the output File
    • \n
    • blacklistGenesFile (str) – str for the txt file containing blacklisted genes
    • \n
    • genesToKeepFile (str) – str for the txt file containing genes to keep
    • \n
    • verbose (bool) – a boolean
    • \n
    \n
    Returns:

    A str name of final sv file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.utilities.iCallSV_dmp_wrapper module\u00b6

    \n
    \n
    \n

    iCallSV.utilities.check_cDNA_contamination module\u00b6

    \n
    \n
    \n

    iCallSV.launchThreads module\u00b6

    \n

    Created on December 21, 2015\nDescription: This module will be launching functions as threads\n@author: Ronak H Shah

    \n
    \n
    \nclass iCallSV.launchThreads.myThread(threadID, name, counter)[source]\u00b6
    \n

    Bases: threading.Thread

    \n
    \n
    \nrun()[source]\u00b6
    \n
    \n\n
    \n\n
    \n
    \niCallSV.launchThreads.print_time(threadName, delay, counter)[source]\u00b6
    \n
    \n\n
    \n
    \n

    iCallSV.launch_FilterDellyCalls module\u00b6

    \n
    \n

    launch_FilterDellyCalls\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will filter delly results and create filtered delly vcf files
    \n
    \n
    \niCallSV.launch_FilterDellyCalls.launch_filterdellycalls_for_different_analysis_type(args, config, sampleOutdirForDelly, del_vcf, dup_vcf, inv_vcf, tra_vcf)[source]\u00b6
    \n

    This will launch the filtering of delly calls in parallel.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • args (Namespace) – Namespace of args to get other variables
    • \n
    • config (Namespace) – configuration file passed to iCallSV
    • \n
    • sampleOutdirForDelly (str) – Output directory for delly vcf files.
    • \n
    • del_vcf (str) – Path to deletion based vcf file
    • \n
    • dup_vcf (str) – Path to duplication based vcf file
    • \n
    • inv_vcf (str) – Path to inversion based vcf file
    • \n
    • tra_vcf (str) – Path to translocation based vcf file
    • \n
    \n
    Returns:

    Multiple objects

    \n
    Return type:

    list

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.launch_Run_Delly module\u00b6

    \n
    \n

    launch_Run_Delly\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will be launching delly using Run_Delly
    \n
    \n
    \niCallSV.launch_Run_Delly.launch_delly_for_different_analysis_type(args, config, sampleOutdirForDelly)[source]\u00b6
    \n

    This will launch delly calls in parallel.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • args (Namespace) – Namespace of args to get other variables
    • \n
    • config (Namespace) – configuration file passed to iCallSV
    • \n
    • sampleOutdirForDelly (str) – Output directory for delly vcf files.
    • \n
    \n
    Returns:

    Multiple objects

    \n
    Return type:

    list

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.make_analysis_dir module\u00b6

    \n
    \n

    make_analysis_dir\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will make directory structure for running analysis
    \n
    \n
    \niCallSV.make_analysis_dir.makeOutputDir(args, tool)[source]\u00b6
    \n

    This will make the output directory tree.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:args (Namespace) – Namespace of args to get other variables
    Returns:Multiple objects
    Return type:list
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.makebamindex module\u00b6

    \n
    \n

    makebamindex\u00b6

    \n\n\n\n\n\n\n\n
    Description:Use PySAM to make bam index
    \n
    \n
    \niCallSV.makebamindex.MakeIndex(bamFile)[source]\u00b6
    \n

    This will make bam index if not there for a bam file using pysam.

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:bamFile (str) – Path to bam file
    Returns:None
    Return type:None
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.mergeFinalFiles module\u00b6

    \n
    \n

    mergeFinalFiles\u00b6

    \n\n\n\n\n\n\n\n
    Description:Merge VCF, iAnnotateSV tab and targetSeqView tab file into a single tab-delimited file
    \n
    \n
    \niCallSV.mergeFinalFiles.run(aId, bId, vcfFile, annoTab, confTab, outDir, outputPrefix, verbose)[source]\u00b6
    \n

    This will Merge VCF, iAnnotateSV tab and targetSeqView tab file into a single tab-delimited file

    \n\n\n\n\n\n\n\n\n\n\n\n
    Parameters:
      \n
    • aId (str) – Sample ID for case that has the structural abberations
    • \n
    • bId (str) – Sample ID for control
    • \n
    • vcfFile (str) – Delly filtered and merged VCF file
    • \n
    • annoTab (str) – iAnnotateSV tab-delimited file with annotations
    • \n
    • confTab (str) – targetSeqView tab-delimited file with probability score
    • \n
    • outputDir (str) – Directory to write the output file
    • \n
    • outputPrefix (str) – Output File Prefix
    • \n
    \n
    Returns:

    str of the tab-delimited file

    \n
    Return type:

    str

    \n
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.sortbamByCoordinate module\u00b6

    \n
    \n

    sortbamByCoordinate\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will sort bam file by coordinate
    \n
    \n
    \niCallSV.sortbamByCoordinate.sortBam(inputBam, outputBamName, outputDir)[source]\u00b6
    \n
    \n\n
    \n
    \n
    \n

    iCallSV.sortbamByReadName module\u00b6

    \n
    \n

    sortbamByReadName\u00b6

    \n\n\n\n\n\n\n\n
    Description:This module will sort bam file by name
    \n
    \n
    \niCallSV.sortbamByReadName.sortBam(inputBam, outputBamName, outputDir)[source]\u00b6
    \n
    \n\n
    \n
    \n
    \n

    Module contents\u00b6

    \n
    \n
    \n", "alabaster_version": "0.7.7", "display_toc": true, "title": "iCallSV: Structural Aberration Detection from NGS datasets", "sourcename": "iCallSV.txt", "customsidebar": null, "current_page_name": "iCallSV", "next": null, "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["index", "iCallSV: Structural Aberration Detection from NGS datasets", "P", "previous"]], "meta": {}, "parents": [], "sidebars": null, "toc": "\n", "prev": {"link": "../", "title": "iCallSV: Structural Aberration Detection from NGS datasets"}, "metatags": ""} \ No newline at end of file diff --git a/docs/_build/json/index.fjson b/docs/_build/json/index.fjson index 33e2637..f81ad39 100644 --- a/docs/_build/json/index.fjson +++ b/docs/_build/json/index.fjson @@ -1 +1 @@ -{"body": "
    \n

    iCallSV: Structural Aberration Detection from NGS datasets\u00b6

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    Author:Ronak H Shah
    Contact:rons.shah@gmail.com
    Source code:http://github.com/rhshah/iCallSV
    Wiki:http://icallsv.readthedocs.io/en/latest/
    License:Apache License 2.0
    \n\"Code\n\n

    iCallSV is a Python library and command-line software toolkit to call structural aberrations from Next Generation DNA sequencing data. Behind the scenes it uses Delly2 to do structural variant calling. It is designed for use with hybrid capture, including both whole-exome and custom target panels, and\nshort-read sequencing platforms such as Illumina.

    \n
    \n
    \n

    Citation\u00b6

    \n

    We are in the process of publishing a manuscript describing iCallSV as part of the Structural Variant Detection framework.\nIf you use this software in a publication, for now, please cite our website iCallSV.

    \n

    Contents:

    \n\n
    \n
    \n

    Indices and tables\u00b6

    \n\n
    \n", "alabaster_version": "0.7.7", "display_toc": true, "title": "iCallSV: Structural Aberration Detection from NGS datasets", "sourcename": "index.txt", "customsidebar": null, "current_page_name": "index", "next": {"link": "iCallSV/", "title": "iCallSV: Structural Aberration Detection from NGS datasets"}, "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["iCallSV", "iCallSV: Structural Aberration Detection from NGS datasets", "N", "next"]], "meta": {}, "parents": [], "sidebars": null, "toc": "\n", "prev": null, "metatags": ""} \ No newline at end of file +{"body": "
    \n

    iCallSV: Structural Aberration Detection from NGS datasets\u00b6

    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    Author:Ronak H Shah
    Contact:rons.shah@gmail.com
    Source code:http://github.com/rhshah/iCallSV
    Wiki:http://icallsv.readthedocs.io/en/latest/
    License:Apache License 2.0
    \n\"Code\n\n

    iCallSV is a Python library and command-line software toolkit to call structural aberrations from Next Generation DNA sequencing data. Behind the scenes it uses Delly2 to do structural variant calling. It is designed for use with hybrid capture, including both whole-exome and custom target panels, and\nshort-read sequencing platforms such as Illumina.

    \n
    \n
    \n

    Citation\u00b6

    \n

    We are in the process of publishing a manuscript describing iCallSV as part of the Structural Variant Detection framework.\nIf you use this software in a publication, for now, please cite our website iCallSV.

    \n

    Contents:

    \n\n
    \n
    \n

    Indices and tables\u00b6

    \n\n
    \n", "alabaster_version": "0.7.7", "display_toc": true, "title": "iCallSV: Structural Aberration Detection from NGS datasets", "sourcename": "index.txt", "customsidebar": null, "current_page_name": "index", "next": {"link": "iCallSV/", "title": "iCallSV: Structural Aberration Detection from NGS datasets"}, "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["iCallSV", "iCallSV: Structural Aberration Detection from NGS datasets", "N", "next"]], "meta": {}, "parents": [], "sidebars": null, "toc": "\n", "prev": null, "metatags": ""} \ No newline at end of file diff --git a/docs/_build/json/objects.inv b/docs/_build/json/objects.inv index 57f04addb1cf2bb4274248d2d8ba5614262312fc..32a82caf2de3a732f8c575d595f4831c4c348a9e 100644 GIT binary patch delta 620 zcmV-y0+aoo2G<3Uc7K*lbK4*ghVS_mnn|x#njUkD-8j{>X*;&ZR}B^`n=t|vR&Mq0 z3qp#&$3RXtE1rFquiagPV1mNGL?eCTWCc7KJtphk`f#6Q_V=!m^un~d9StAM%r{9J z4n3fOsA6+G-Pz2{x%>E=tl^GL2L@p=5kB0k5qU>>@7X&M zBEg=8kVp^$PW6Nfk<+AFaiYzR1gY(@5HTcb4LFBCO9p>~^o~eh$zlV=cFak!{lPSP z>m6h1#16AE!+%V7MsAEi!}Ze{5c)ncw-CI2e3Lk@C5Er!06biWF>7Ov(eGB#kAv1w z6GbX87eqCeg`M36%(+WO#S!! z9r1l()E>sND8DSo%3J0TN_XZL9qcU@mqsq*sVPD`P=9#t^j0`!S4W1dO9RsN8F`W^ zUO_-q1pVFIfxt{;wzvx4;(EoG4aJ7Eklz97I7gm$DYTX0#5mk6Hp(O<9Y>{A>;751 zF!fAd3+^&DEX_R6jii2Tt(d?ZS><)aj?JUnwk!N#cZb!zjKbRUQmUM?vNS!FiIVhb zHb>7q+hw~AZKsF5k delta 692 zcmV;l0!#hZ1)c_wc7K;mQ`;~QhVT3e&(Ld3>5&_xgt{%1Niw;5WNV#hq7PSEhx*@F z@<&2K7$k9Ww9&KgN|tulYmiJ*_?H-@H=Go}lgV|m9;{cFN#>pxLeVqR>UJ{zVP`%n z+He>E14NgbPgbR@~L=>DDyCXqr2P{MkiCzOP;O~mTOOW0X=_^@opxoYZQf_}U zgWh__SUPpXtbfWdGo6uJBhYaDbPj~>NA?tgw~rqR7q!ChRlEXUufv*+HOJ_8s~E;X zYp97P0_=e?VM{o0{kXeOx03MIFtcpymOh>c#qQ*9wj@-C@oJqeIr$oUdtfn*n z{oW(KH;lTMu_~)?OHz2tyoS=9ePR!Li^Zjp^LT2D(0>jzzIFOhI8|3i#;i*N()Ani zBvU+qgs2FHv$+F_nao^qmA=LG9bYaK7t&Jw0;uC0d7h=vR%UqSRMh#4CUqT9!p^X+ z%=}bEK%}SiGw5ffc&vv7a47LfX+b{W1DkptwBJX(y8%sM6QhasAP9?AueB<{80D3g zIk6Kq%YTiw^~k@Z98sxg`(F+(Z98MU#P-;DvTb(WDC)=7nn}!&3GiQJ9^JLS!;kj< zu6BvBboRVbI;X6vY)fsUBtwZz@q210xnK$a diff --git a/docs/_build/json/py-modindex.fjson b/docs/_build/json/py-modindex.fjson index 517e5ab..4d276a2 100644 --- a/docs/_build/json/py-modindex.fjson +++ b/docs/_build/json/py-modindex.fjson @@ -1 +1 @@ -{"customsidebar": null, "current_page_name": "py-modindex", "sidebars": null, "content": [["i", [["iCallSV", 1, "iCallSV", "module-iCallSV", "", "", ""], ["iCallSV.checkBlackList", 2, "iCallSV", "module-iCallSV.checkBlackList", "", "", ""], ["iCallSV.checkHotSpotList", 2, "iCallSV", "module-iCallSV.checkHotSpotList", "", "", ""], ["iCallSV.checkparameters", 2, "iCallSV", "module-iCallSV.checkparameters", "", "", ""], ["iCallSV.combineVCF", 2, "iCallSV", "module-iCallSV.combineVCF", "", "", ""], ["iCallSV.dellyVcf2Tab", 2, "iCallSV", "module-iCallSV.dellyVcf2Tab", "", "", ""], ["iCallSV.dellyVcf2targetSeqView", 2, "iCallSV", "module-iCallSV.dellyVcf2targetSeqView", "", "", ""], ["iCallSV.filterAnnotatedSV", 2, "iCallSV", "module-iCallSV.filterAnnotatedSV", "", "", ""], ["iCallSV.FilterDellyCalls", 2, "iCallSV", "module-iCallSV.FilterDellyCalls", "", "", ""], ["iCallSV.iCallSV", 2, "iCallSV", "module-iCallSV.iCallSV", "", "", ""], ["iCallSV.iCallSV_dmp_wrapper", 2, "iCallSV", "module-iCallSV.iCallSV_dmp_wrapper", "", "", ""], ["iCallSV.launch_FilterDellyCalls", 2, "iCallSV", "module-iCallSV.launch_FilterDellyCalls", "", "", ""], ["iCallSV.launch_Run_Delly", 2, "iCallSV", "module-iCallSV.launch_Run_Delly", "", "", ""], ["iCallSV.launchThreads", 2, "iCallSV", "module-iCallSV.launchThreads", "", "", ""], ["iCallSV.make_analysis_dir", 2, "iCallSV", "module-iCallSV.make_analysis_dir", "", "", ""], ["iCallSV.makebamindex", 2, "iCallSV", "module-iCallSV.makebamindex", "", "", ""], ["iCallSV.mergeFinalFiles", 2, "iCallSV", "module-iCallSV.mergeFinalFiles", "", "", ""], ["iCallSV.Run_Delly", 2, "iCallSV", "module-iCallSV.Run_Delly", "", "", ""], ["iCallSV.Run_iAnnotateSV", 2, "iCallSV", "module-iCallSV.Run_iAnnotateSV", "", "", ""], ["iCallSV.Run_samblaster", 2, "iCallSV", "module-iCallSV.Run_samblaster", "", "", ""], ["iCallSV.Run_targetSeqView", 2, "iCallSV", "module-iCallSV.Run_targetSeqView", "", "", ""], ["iCallSV.sortbamByCoordinate", 2, "iCallSV", "module-iCallSV.sortbamByCoordinate", "", "", ""], ["iCallSV.sortbamByReadName", 2, "iCallSV", "module-iCallSV.sortbamByReadName", "", "", ""]]]], "collapse_index": false, "indextitle": "Python Module Index", "alabaster_version": "0.7.7"} \ No newline at end of file +{"customsidebar": null, "current_page_name": "py-modindex", "sidebars": null, "content": [["i", [["iCallSV", 1, "iCallSV", "module-iCallSV", "", "", ""], ["iCallSV.checkBlackList", 2, "iCallSV", "module-iCallSV.checkBlackList", "", "", ""], ["iCallSV.checkHotSpotList", 2, "iCallSV", "module-iCallSV.checkHotSpotList", "", "", ""], ["iCallSV.checkparameters", 2, "iCallSV", "module-iCallSV.checkparameters", "", "", ""], ["iCallSV.combineVCF", 2, "iCallSV", "module-iCallSV.combineVCF", "", "", ""], ["iCallSV.dellyVcf2Tab", 2, "iCallSV", "module-iCallSV.dellyVcf2Tab", "", "", ""], ["iCallSV.dellyVcf2targetSeqView", 2, "iCallSV", "module-iCallSV.dellyVcf2targetSeqView", "", "", ""], ["iCallSV.filterAnnotatedSV", 2, "iCallSV", "module-iCallSV.filterAnnotatedSV", "", "", ""], ["iCallSV.FilterDellyCalls", 2, "iCallSV", "module-iCallSV.FilterDellyCalls", "", "", ""], ["iCallSV.iCallSV", 2, "iCallSV", "module-iCallSV.iCallSV", "", "", ""], ["iCallSV.launch_FilterDellyCalls", 2, "iCallSV", "module-iCallSV.launch_FilterDellyCalls", "", "", ""], ["iCallSV.launch_Run_Delly", 2, "iCallSV", "module-iCallSV.launch_Run_Delly", "", "", ""], ["iCallSV.launchThreads", 2, "iCallSV", "module-iCallSV.launchThreads", "", "", ""], ["iCallSV.make_analysis_dir", 2, "iCallSV", "module-iCallSV.make_analysis_dir", "", "", ""], ["iCallSV.makebamindex", 2, "iCallSV", "module-iCallSV.makebamindex", "", "", ""], ["iCallSV.mergeFinalFiles", 2, "iCallSV", "module-iCallSV.mergeFinalFiles", "", "", ""], ["iCallSV.Run_Delly", 2, "iCallSV", "module-iCallSV.Run_Delly", "", "", ""], ["iCallSV.Run_iAnnotateSV", 2, "iCallSV", "module-iCallSV.Run_iAnnotateSV", "", "", ""], ["iCallSV.Run_samblaster", 2, "iCallSV", "module-iCallSV.Run_samblaster", "", "", ""], ["iCallSV.Run_targetSeqView", 2, "iCallSV", "module-iCallSV.Run_targetSeqView", "", "", ""], ["iCallSV.sortbamByCoordinate", 2, "iCallSV", "module-iCallSV.sortbamByCoordinate", "", "", ""], ["iCallSV.sortbamByReadName", 2, "iCallSV", "module-iCallSV.sortbamByReadName", "", "", ""]]]], "collapse_index": false, "indextitle": "Python Module Index", "alabaster_version": "0.7.7"} \ No newline at end of file diff --git a/docs/_build/json/searchindex.json b/docs/_build/json/searchindex.json index e9250db..cdaafbf 100644 --- a/docs/_build/json/searchindex.json +++ b/docs/_build/json/searchindex.json @@ -1 +1 @@ -{"envversion": 46, "terms": {"all": 0, "code": 1, "alk": 0, "ron": [0, 1], "biopython": 0, "launch_filterdellycalls_for_different_analysis_typ": 0, "thresholdvari": 0, "checkfil": 0, "wihout": 0, "genestokeepfil": 0, "prefix": 0, "follow": 0, "repeatregionannot": 0, "intron": 0, "fof": 0, "program": 0, "decis": 0, "under": 0, "casesupportingsplitreadshotspot": 0, "inputvcf": 0, "file": [], "sourc": [0, 1], "fals": 0, "hospotfil": 0, "conftab": 0, "controlsupportingread": 0, "dup_vcf": 0, "srsupporthotspotcas": 0, "tra": 0, "poolnam": 0, "cmd": 0, "list": 0, "upload": [], "cosmiccensu": 0, "rlib": 0, "readthedoc": 1, "dir": 0, "pleas": [0, 1], "impli": 0, "icsv": 0, "gene1": 0, "gene2": 0, "direct": 0, "genestokeep": 0, "second": 0, "design": 1, "rhome": 0, "pass": 0, "download": [], "outputdir": 0, "compat": 0, "index": [0, 1], "what": 0, "filetocheck": 0, "sub": 0, "neg": 0, "delet": 0, "version": 0, "method": 0, "reffasta": 0, "full": 0, "outputprefix": 0, "variat": 0, "gener": [0, 1], "splice": 0, "path": 0, "readhotspotfil": 0, "valu": 0, "search": [0, 1], "pesupportcontrol": 0, "precis": 0, "casesupportingreadshotspot": 0, "controlsupportingsplitreadshotspot": 0, "overallsupportingsplitread": 0, "gene": 0, "readcount": 0, "uniprotfil": 0, "boolean": 0, "instal": 0, "txt": 0, "sge": 0, "overallsupportingread": 0, "select": 0, "checkifitishotspot": 0, "dna": 1, "describ": 1, "memori": 0, "coverag": 0, "next": [0, 1], "websit": 1, "chr": 0, "makeoutputdir": 0, "call": [0, 1], "controlaltfreqhotspot": 0, "imprecis": 0, "black": 0, "type": 0, "tell": 0, "sort": 0, "site": 0, "templat": 0, "lengthofsv": 0, "parameterstofilterdellyresult": 0, "hotspotfil": 0, "none": 0, "bamfil": 0, "ronak": [0, 1], "setup": 0, "controlbam": 0, "annot": 0, "del": 0, "control": 0, "tab": 0, "give": 0, "process": 1, "casebam": 0, "indic": [], "tag": 0, "varaibletocheck": 0, "titlefil": 0, "delai": 0, "multipl": 0, "samplebamnam": 0, "samplesplitbamnam": 0, "write": 0, "hot": 0, "mapq": 0, "somepath": 0, "verifi": 0, "config": 0, "updat": 0, "map": 0, "casealtfreqhotspot": 0, "hotspotgen": 0, "spot": 0, "checkempti": 0, "end": 0, "data": [], "parallel": 0, "outdir": 0, "github": 1, "checkblacklistgen": 0, "chr2": 0, "chr1": 0, "counter": 0, "exclud": 0, "inform": 0, "dellyvarialbl": 0, "combin": 0, "checkdir": 0, "help": 0, "transloc": 0, "runjob": 0, "affect": 0, "paramet": 0, "abber": 0, "blacklistregionsfil": [], "picard": 0, "blacklistregion": 0, "platform": 1, "mythread": 0, "controlsupportingreadshotspot": 0, "analysistyp": 0, "main": 0, "return": 0, "thei": [], "python": [0, 1], "overal": 0, "scene": 1, "framework": 1, "calculateconfidencescor": 0, "splitread": 0, "exom": 1, "now": 1, "shah": [0, 1], "name": 0, "level": 0, "excluderegion": 0, "separ": 0, "genom": 0, "debug": 0, "confid": 0, "svconfig": 0, "runperpool": 0, "srsupport": 0, "svlength": 0, "short": 1, "combinedvcf": 0, "meta": 0, "variablenam": 0, "our": 1, "extract": 0, "event": 0, "variabl": 0, "canonicaltranscriptfil": 0, "vcf": 0, "start2": 0, "start1": 0, "controldv": 0, "pesupporthotspotcontrol": 0, "publish": 1, "pyhton": 0, "getcontrolflag": 0, "sloan": 0, "insid": 0, "variant": [0, 1], "folderlist": 0, "base": 0, "tra_vcf": 0, "foldertocheck": 0, "org": 0, "basi": 0, "thread": 0, "launch": 0, "frequenc": 0, "blacklistfil": 0, "sortbam": 0, "cosmic": 0, "keep": 0, "filter": 0, "length": 0, "mskcc": 0, "tragetseqview": 0, "support": 0, "first": 0, "oper": 0, "softwar": 1, "manuscript": 1, "overallmapq": 0, "qualiti": 0, "number": 0, "wrapper": 0, "svfile": 0, "given": 0, "script": 0, "licens": [0, 1], "messag": 0, "pyvcf": 0, "master": 0, "blacklistgenesfil": 0, "final": 0, "option": 0, "namespac": 0, "tool": 0, "blacklist": 0, "part": [0, 1], "exregion": 0, "keepgen": 0, "dirloc": 0, "kind": 0, "target": 1, "dgvfile": 0, "remov": 0, "tree": 0, "sampleoutdirfordelli": 0, "cite": 1, "panda": 0, "str": 0, "posit": 0, "function": 0, "sam": 0, "convert2targetseqview": 0, "pesupporthotspotcas": 0, "ani": 0, "packag": [], "have": 0, "need": [], "fasta": 0, "allel": 0, "lib": 0, "hotspot": 0, "srsupporthotspot": 0, "chromosom": 0, "exampl": 0, "samtool": 0, "build": 0, "which": 0, "singl": 0, "getfilteredrecord": 0, "distribut": 0, "normal": 0, "object": 0, "breakpoint": 0, "pair": 0, "controlid": 0, "class": 0, "order": 0, "casebamfil": 0, "inv_vcf": 0, "show": 0, "verbos": 0, "threshold": 0, "dellyvers": 0, "impact": 0, "onli": 0, "locat": 0, "nois": 0, "copyright": 0, "illumina": [0, 1], "casesupportingsplitread": 0, "configur": [], "apach": [0, 1], "written": 0, "should": 0, "dict": 0, "analyz": 0, "folder": 0, "local": 0, "print_tim": 0, "variou": 0, "get": 0, "controlrv": 0, "express": 0, "controlrr": 0, "makeindex": 0, "preciseflag": 0, "report": 0, "iannotatesv": 0, "public": 1, "whether": 0, "contain": 0, "casetotalcounthotspot": 0, "bam": 0, "where": 0, "wiki": 1, "set": 0, "samplenam": 0, "inputbam": 0, "delly2": 1, "controlbamfil": 0, "result": 0, "arg": 0, "reserv": 0, "getcaseflag": 0, "best": 0, "gmail": [0, 1], "unmatch": 0, "databas": 0, "discordantfilenam": 0, "outsvfilenam": 0, "bbam": 0, "behind": 1, "score": 0, "censu": 0, "overallmapqhotspot": 0, "altern": 0, "hg38": 0, "checkgenelisttokeep": 0, "extens": 0, "job": 0, "srsupportcas": 0, "extent": 0, "overallsupportingreadshotspot": 0, "getsubdir": 0, "both": 1, "delimit": 0, "region": 0, "site2": 0, "site1": 0, "rlocat": 0, "braf": 0, "uniprot": 0, "whole": 1, "threadnam": 0, "cancer": 0, "selectnorm": 0, "header": 0, "duplic": 0, "invers": 0, "poolnorm": 0, "inv": 0, "referec": 0, "spit": 0, "outsvfil": 0, "imag": 0, "convert": 0, "argument": 0, "coordin": 0, "qclocat": 0, "input": 0, "linc00486": 0, "checkeventinintronflag": 0, "present": 0, "case": 0, "align": 0, "inputtabfil": 0, "abov": 0, "delli": 0, "aid": 0, "readblacklistfil": 0, "samblast": 0, "bamloc": 0, "toolkit": 1, "casecoveragehotspot": 0, "srsupportcontrol": 0, "conf": 0, "icallsvconf": 0, "hotspotregion": 0, "queue": 0, "author": [0, 1], "casedv": 0, "make": 0, "casedr": 0, "same": 0, "read": [0, 1], "split": 0, "pesupporthotspot": 0, "lenient": 0, "document": 0, "bamfilepath": 0, "setuprun": 0, "annotab": 0, "http": [0, 1], "checkifitisblacklist": 0, "vcffile": 0, "inputtxt": 0, "bamfilelist": 0, "readlength": 0, "controlaltfreq": 0, "repeatregionfil": 0, "casecoverag": 0, "kept": 0, "center": 0, "com": [0, 1], "without": 0, "command": [0, 1], "thi": [0, 1], "outputfilenam": 0, "latest": 1, "distanc": 0, "just": 0, "discord": 0, "ccontrolaltfreq": 0, "hybrid": 1, "abam": 0, "hsmetricsfilelist": 0, "human": 0, "dellyvari": 0, "other": 0, "checkdellyanalysistyp": 0, "dgvannot": 0, "match": 0, "format": [], "parameterstorundelli": 0, "bid": 0, "genomebuild": 0, "genenam": 0, "pesupport": 0, "either": 0, "output": 0, "page": 1, "tumorid": 0, "www": 0, "right": 0, "casesupportingread": 0, "rhshah": 1, "ketter": 0, "some": 0, "bcftool": 0, "intern": 0, "sampl": 0, "librari": 1, "total": 0, "splitfilenam": 0, "per": 0, "ucsc": 0, "exit": 0, "contact": [0, 1], "condit": 0, "refer": 0, "machin": 0, "run": 0, "controlsupportingsplitread": 0, "facilit": 0, "mapqhotspot": 0, "casealtfreq": 0, "panel": 1, "deffield": 0, "annosv": 0, "tumor": 0, "threadid": 0, "hg18": 0, "hg19": 0, "processor": 0, "cutoff": 0, "cosmicfil": 0, "fraction": 0, "float": 0, "warranti": 0, "outprefix": 0, "hsmetric": 0, "variabletocheck": 0, "merg": 0, "git": [], "repeset": 0, "execut": 0, "captur": 1, "custom": 1, "start": 0, "includ": 1, "lot": 0, "msk": 0, "cnot4": 0, "analysi": 0, "prefix_for_the_output_fil": 0, "hotspotdict": 0, "jobqueu": 0, "casetotalcount": 0, "dup": 0, "qsub": 0, "line": [0, 1], "true": 0, "count": 0, "made": 0, "targetseqview": 0, "possibl": 0, "referencefasta": 0, "wish": 0, "caseid": 0, "srsupporthotspotcontrol": 0, "record": 0, "vcf2tab": 0, "blacklistgen": 0, "pysam": 0, "creat": 0, "int": 0, "overallsupportingsplitreadshotspot": 0, "outputbamnam": 0, "repres": 0, "exist": 0, "ini": 0, "svcaller": 0, "check": 0, "probabl": 0, "checkint": 0, "pesupportcas": 0, "launch_delly_for_different_analysis_typ": 0, "default": 0, "clin": 0, "genestoinclud": 0, "bool": 0, "test": 0, "you": [0, 1], "node": 0, "del_vcf": 0, "repeat": 0, "sequenc": [0, 1], "pool": 0, "altratio": 0, "numberofprocessor": 0, "directori": 0, "caserv": 0, "flaot": 0, "descript": 0, "caserr": 0, "controldr": 0, "time": 0, "qsubpath": 0, "decemb": 0}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "filenames": ["iCallSV", "index"], "titles": ["iCallSV: Structural Aberration Detection from NGS datasets", "iCallSV: Structural Aberration Detection from NGS datasets"], "objects": {"": {"iCallSV": [0, 0, 0, "-"]}, "iCallSV.checkBlackList": {"CheckIfItIsBlacklisted": [0, 1, 1, ""], "ReadBlackListFile": [0, 1, 1, ""]}, "iCallSV": {"iCallSV_dmp_wrapper": [0, 0, 0, "-"], "iCallSV": [0, 0, 0, "-"], "Run_Delly": [0, 0, 0, "-"], "checkHotSpotList": [0, 0, 0, "-"], "filterAnnotatedSV": [0, 0, 0, "-"], "launch_FilterDellyCalls": [0, 0, 0, "-"], "dellyVcf2Tab": [0, 0, 0, "-"], "Run_iAnnotateSV": [0, 0, 0, "-"], "launchThreads": [0, 0, 0, "-"], "combineVCF": [0, 0, 0, "-"], "Run_targetSeqView": [0, 0, 0, "-"], "checkBlackList": [0, 0, 0, "-"], "make_analysis_dir": [0, 0, 0, "-"], "checkparameters": [0, 0, 0, "-"], "sortbamByReadName": [0, 0, 0, "-"], "Run_samblaster": [0, 0, 0, "-"], "launch_Run_Delly": [0, 0, 0, "-"], "FilterDellyCalls": [0, 0, 0, "-"], "sortbamByCoordinate": [0, 0, 0, "-"], "mergeFinalFiles": [0, 0, 0, "-"], "dellyVcf2targetSeqView": [0, 0, 0, "-"], "makebamindex": [0, 0, 0, "-"]}, "iCallSV.dellyVcf2targetSeqView": {"Convert2targetSeqView": [0, 1, 1, ""]}, "iCallSV.sortbamByReadName": {"sortBam": [0, 1, 1, ""]}, "iCallSV.Run_targetSeqView": {"run": [0, 1, 1, ""]}, "iCallSV.Run_samblaster": {"run": [0, 1, 1, ""]}, "iCallSV.mergeFinalFiles": {"run": [0, 1, 1, ""]}, "iCallSV.Run_Delly": {"run": [0, 1, 1, ""]}, "iCallSV.checkparameters": {"checkEmpty": [0, 1, 1, ""], "checkDellyAnalysisType": [0, 1, 1, ""], "checkInt": [0, 1, 1, ""], "checkFile": [0, 1, 1, ""], "checkDir": [0, 1, 1, ""]}, "iCallSV.launch_FilterDellyCalls": {"launch_filterdellycalls_for_different_analysis_type": [0, 1, 1, ""]}, "iCallSV.FilterDellyCalls": {"GetControlFlag": [0, 1, 1, ""], "run": [0, 1, 1, ""], "GetCaseFlag": [0, 1, 1, ""], "GetFilteredRecords": [0, 1, 1, ""]}, "iCallSV.combineVCF": {"run": [0, 1, 1, ""]}, "iCallSV.launchThreads.myThread": {"run": [0, 3, 1, ""]}, "iCallSV.filterAnnotatedSV": {"checkGeneListToKeep": [0, 1, 1, ""], "checkBlackListGene": [0, 1, 1, ""], "run": [0, 1, 1, ""], "checkEventInIntronFlag": [0, 1, 1, ""]}, "iCallSV.make_analysis_dir": {"makeOutputDir": [0, 1, 1, ""]}, "iCallSV.launch_Run_Delly": {"launch_delly_for_different_analysis_type": [0, 1, 1, ""]}, "iCallSV.dellyVcf2Tab": {"vcf2tab": [0, 1, 1, ""]}, "iCallSV.checkHotSpotList": {"CheckIfItIsHotspot": [0, 1, 1, ""], "ReadHotSpotFile": [0, 1, 1, ""]}, "iCallSV.launchThreads": {"print_time": [0, 1, 1, ""], "myThread": [0, 2, 1, ""]}, "iCallSV.makebamindex": {"MakeIndex": [0, 1, 1, ""]}, "iCallSV.Run_iAnnotateSV": {"run": [0, 1, 1, ""]}, "iCallSV.sortbamByCoordinate": {"sortBam": [0, 1, 1, ""]}, "iCallSV.iCallSV_dmp_wrapper": {"RunPerPool": [0, 1, 1, ""], "RunJob": [0, 1, 1, ""], "SelectNormal": [0, 1, 1, ""], "main": [0, 1, 1, ""], "getSubDirs": [0, 1, 1, ""], "processor": [0, 1, 1, ""], "SetupRun": [0, 1, 1, ""]}}, "titleterms": {"filterannotatedsv": 0, "icallsv_dmp_wrapp": 0, "launchthread": 0, "citat": 1, "sortbambyreadnam": 0, "modul": 0, "submodul": 0, "indic": 1, "dataset": [0, 1], "packag": 0, "file": 0, "tabl": 1, "dellyvcf2targetseqview": 0, "run_iannot": 0, "checkparamet": 0, "detect": [0, 1], "from": [0, 1], "mergefinalfil": 0, "icallsv": [0, 1], "configur": 0, "run_targetseqview": 0, "filterdellycal": 0, "content": 0, "launch_run_delli": 0, "run_samblast": 0, "checkhotspotlist": 0, "run_delli": 0, "format": 0, "sortbambycoordin": 0, "usag": 0, "checkblacklist": 0, "util": 0, "launch_filterdellycal": 0, "make_analysis_dir": 0, "data": 0, "requir": 0, "combinevcf": 0, "structur": [0, 1], "dellyvcf2tab": 0, "aberr": [0, 1], "quick": 0, "run_iannotatesv": 0, "makebamindex": 0}} \ No newline at end of file +{"envversion": 46, "terms": {"all": 0, "code": 1, "alk": 0, "ron": [0, 1], "biopython": 0, "launch_filterdellycalls_for_different_analysis_typ": 0, "thresholdvari": 0, "checkfil": 0, "wihout": 0, "genestokeepfil": 0, "prefix": 0, "follow": 0, "repeatregionannot": 0, "intron": 0, "fof": 0, "program": 0, "decis": [], "under": 0, "casesupportingsplitreadshotspot": 0, "inputvcf": 0, "sourc": [0, 1], "fals": 0, "hospotfil": 0, "conftab": 0, "affect": 0, "dup_vcf": 0, "srsupporthotspotcas": 0, "tra": 0, "poolnam": [], "cmd": [], "list": 0, "upload": [], "cosmiccensu": 0, "rlib": 0, "readthedoc": 1, "dir": 0, "pleas": [0, 1], "impli": 0, "icsv": 0, "gene1": 0, "gene2": 0, "direct": 0, "genestokeep": 0, "second": 0, "design": 1, "rhome": 0, "pass": 0, "download": [], "outputdir": 0, "compat": 0, "index": [0, 1], "what": 0, "filetocheck": 0, "sub": 0, "neg": 0, "delet": 0, "version": 0, "method": 0, "reffasta": 0, "full": 0, "outputprefix": 0, "variat": 0, "gener": [0, 1], "splice": 0, "path": 0, "readhotspotfil": 0, "valu": 0, "search": [0, 1], "pesupportcontrol": 0, "precis": 0, "casesupportingreadshotspot": 0, "controlsupportingsplitreadshotspot": 0, "overallsupportingsplitread": 0, "gene": 0, "readcount": 0, "uniprotfil": 0, "boolean": 0, "instal": 0, "txt": 0, "sge": 0, "overallsupportingread": 0, "select": 0, "checkifitishotspot": 0, "dna": 1, "describ": 1, "memori": 0, "coverag": 0, "hsmetric": [], "websit": 1, "chr": 0, "makeoutputdir": 0, "call": [0, 1], "controlaltfreqhotspot": 0, "imprecis": 0, "dict": 0, "type": 0, "tell": 0, "sort": 0, "toolkit": 1, "templat": 0, "lengthofsv": 0, "parameterstofilterdellyresult": 0, "hotspotfil": 0, "none": 0, "bamfil": 0, "ronak": [0, 1], "setup": [], "controlbam": 0, "annot": 0, "del": 0, "control": 0, "tab": 0, "give": 0, "process": [], "casebam": 0, "indic": [], "tag": 0, "varaibletocheck": 0, "titlefil": [], "delai": 0, "multipl": 0, "variou": 0, "samplesplitbamnam": 0, "write": 0, "hot": 0, "mapq": 0, "somepath": 0, "verifi": 0, "config": 0, "confid": 0, "map": 0, "casealtfreqhotspot": 0, "threadid": 0, "variant": [0, 1], "lot": 0, "hg19": 0, "end": 0, "data": [], "parallel": 0, "outdir": 0, "short": 1, "checkblacklistgen": 0, "chr2": 0, "chr1": 0, "counter": 0, "exclud": 0, "inform": [], "dellyvarialbl": 0, "combin": 0, "order": 0, "help": 0, "transloc": 0, "runjob": [], "controlsupportingread": 0, "paramet": 0, "abber": 0, "blacklistregionsfil": [], "picard": [], "blacklistregion": 0, "platform": 1, "mythread": 0, "controlsupportingreadshotspot": 0, "analysistyp": 0, "main": 0, "return": 0, "thei": [], "python": [0, 1], "overal": 0, "scene": 1, "framework": 1, "calculateconfidencescor": 0, "splitread": 0, "exom": 1, "now": 1, "lenient": 0, "name": 0, "level": 0, "excluderegion": 0, "separ": 0, "genom": 0, "debug": 0, "updat": [], "svconfig": 0, "runperpool": [], "srsupport": 0, "svlength": 0, "combinedvcf": 0, "meta": [], "variablenam": 0, "our": 1, "extract": 0, "event": 0, "variabl": 0, "vcf": 0, "start2": 0, "start1": 0, "controldv": 0, "pesupporthotspotcontrol": 0, "publish": 1, "pyhton": 0, "getcontrolflag": 0, "sloan": 0, "insid": 0, "spot": 0, "folderlist": 0, "base": 0, "tra_vcf": 0, "foldertocheck": 0, "org": 0, "basi": 0, "thread": 0, "launch": 0, "frequenc": 0, "blacklistfil": 0, "sortbam": 0, "cosmic": 0, "keep": 0, "filter": 0, "length": 0, "mskcc": [], "tragetseqview": 0, "support": 0, "first": 0, "oper": [], "softwar": 1, "manuscript": 1, "overallmapq": 0, "qualiti": 0, "number": 0, "messag": 0, "svcaller": 0, "casedr": 0, "svfile": 0, "given": 0, "script": 0, "licens": [0, 1], "wrapper": 0, "pyvcf": 0, "master": 0, "blacklistgenesfil": 0, "cite": 1, "option": 0, "namespac": 0, "tool": 0, "blacklist": 0, "github": 1, "exregion": 0, "dirloc": [], "kind": 0, "target": 1, "dgvfile": 0, "remov": 0, "tree": 0, "sampleoutdirfordelli": 0, "final": 0, "panda": 0, "str": 0, "posit": 0, "analysi": 0, "sam": 0, "prefix_for_the_output_fil": 0, "pesupporthotspotcas": 0, "ani": 0, "packag": [], "have": 0, "need": [], "fasta": 0, "allel": 0, "lib": 0, "hotspot": 0, "srsupporthotspot": 0, "chromosom": 0, "without": 0, "samtool": 0, "build": 0, "which": 0, "singl": 0, "pipelin": 0, "getfilteredrecord": 0, "distribut": 0, "normal": 0, "object": 0, "breakpoint": 0, "pair": 0, "controlid": 0, "class": 0, "checkdir": 0, "part": [0, 1], "casebamfil": 0, "inv_vcf": 0, "show": 0, "verbos": 0, "threshold": 0, "dellyvers": 0, "impact": [], "onli": 0, "locat": 0, "nois": 0, "copyright": 0, "illumina": [0, 1], "casesupportingsplitread": 0, "configur": [], "apach": [0, 1], "behind": 1, "should": 0, "black": 0, "analyz": 0, "folder": 0, "local": [], "print_tim": 0, "samplebamnam": 0, "get": 0, "controlrv": 0, "express": 0, "controlrr": 0, "next": [0, 1], "makeindex": 0, "preciseflag": 0, "report": 0, "iannotatesv": 0, "public": 1, "referencefasta": 0, "contain": 0, "casetotalcounthotspot": 0, "bam": 0, "where": 0, "wiki": 1, "set": 0, "samplenam": 0, "inputbam": 0, "delly2": 1, "controlbamfil": 0, "result": 0, "arg": 0, "reserv": 0, "getcaseflag": 0, "best": [], "gmail": [0, 1], "databas": 0, "discordantfilenam": 0, "outsvfilenam": 0, "bbam": 0, "written": 0, "score": 0, "censu": 0, "cdna_contamin": 0, "altern": 0, "hg38": 0, "checkgenelisttokeep": 0, "extens": 0, "job": [], "dellyvari": 0, "extent": 0, "overallsupportingreadshotspot": 0, "getsubdir": [], "both": 1, "delimit": 0, "region": 0, "site2": 0, "site1": 0, "rlocat": 0, "braf": 0, "uniprot": 0, "overallmapqhotspot": 0, "whole": 1, "annotab": 0, "threadnam": 0, "cancer": 0, "selectnorm": [], "header": 0, "duplic": 0, "invers": 0, "poolnorm": [], "overallsupportingsplitreadshotspot": 0, "referec": 0, "spit": 0, "outsvfil": 0, "imag": 0, "convert": 0, "argument": 0, "coordin": 0, "qclocat": 0, "dgvannot": 0, "linc00486": 0, "checkeventinintronflag": 0, "present": 0, "case": 0, "align": 0, "calcul": 0, "inputtabfil": 0, "abov": 0, "delli": 0, "aid": 0, "readblacklistfil": 0, "samblast": 0, "pool": [], "bamloc": 0, "site": 0, "casecoveragehotspot": 0, "srsupportcontrol": 0, "conf": 0, "icallsvconf": 0, "hotspotregion": 0, "queue": 0, "author": [0, 1], "casedv": 0, "make": 0, "keepgen": 0, "same": 0, "parameterstorundelli": 0, "split": 0, "pesupporthotspot": 0, "shah": [0, 1], "document": 0, "bamfilepath": 0, "setuprun": [], "unmatch": [], "http": [0, 1], "checkifitisblacklist": 0, "vcffile": 0, "inputtxt": 0, "bamfilelist": [], "readlength": 0, "controlaltfreq": 0, "repeatregionfil": 0, "casecoverag": 0, "kept": 0, "center": 0, "com": [0, 1], "exampl": 0, "command": 1, "thi": [0, 1], "outputfilenam": 0, "latest": 1, "distanc": 0, "just": 0, "discord": 0, "launch_delly_for_different_analysis_typ": 0, "abam": 0, "hsmetricsfilelist": [], "human": 0, "srsupportcas": 0, "controldr": 0, "genestoinclud": 0, "checkdellyanalysistyp": 0, "input": 0, "match": [], "format": [], "read": [0, 1], "bid": 0, "genomebuild": 0, "genenam": 0, "pesupport": 0, "either": 0, "output": 0, "page": 1, "tumorid": 0, "www": 0, "right": 0, "casesupportingread": 0, "rhshah": 1, "ketter": 0, "some": 0, "bcftool": 0, "intern": 0, "sampl": [], "librari": 1, "total": 0, "splitfilenam": 0, "per": 0, "ucsc": 0, "exit": 0, "contact": [0, 1], "condit": 0, "refer": 0, "machin": [], "run": [], "controlsupportingsplitread": 0, "facilit": 0, "mapqhotspot": 0, "casealtfreq": 0, "annosv": 0, "panel": 1, "deffield": [], "contamin": 0, "tumor": 0, "hotspotgen": 0, "hg18": 0, "checkempti": 0, "processor": [], "cutoff": 0, "cosmicfil": 0, "float": 0, "warranti": 0, "outprefix": 0, "canonicaltranscriptfil": 0, "variabletocheck": 0, "merg": 0, "git": [], "repeset": 0, "execut": 0, "captur": 1, "custom": 1, "start": 0, "includ": 1, "fraction": 0, "msk": [], "cnot4": 0, "function": 0, "convert2targetseqview": 0, "hotspotdict": 0, "jobqueu": [], "casetotalcount": 0, "dup": 0, "qsub": 0, "line": [0, 1], "true": 0, "count": [], "made": 0, "check_cdna_contamin": [], "targetseqview": 0, "possibl": [], "whether": [], "wish": 0, "caseid": 0, "srsupporthotspotcontrol": 0, "record": 0, "vcf2tab": 0, "blacklistgen": 0, "pysam": 0, "creat": 0, "int": 0, "inv": 0, "outputbamnam": 0, "repres": 0, "exist": 0, "ini": 0, "file": [], "check": 0, "probabl": 0, "checkint": 0, "hybrid": 1, "default": 0, "clin": 0, "other": 0, "bool": 0, "test": 0, "you": [0, 1], "node": 0, "del_vcf": 0, "repeat": 0, "sequenc": [0, 1], "ccontrolaltfreq": 0, "altratio": 0, "numberofprocessor": 0, "directori": 0, "caserv": 0, "flaot": 0, "descript": 0, "caserr": 0, "pesupportcas": 0, "time": 0, "qsubpath": 0, "decemb": 0}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "filenames": ["iCallSV", "index"], "titles": ["iCallSV: Structural Aberration Detection from NGS datasets", "iCallSV: Structural Aberration Detection from NGS datasets"], "objects": {"": {"iCallSV": [0, 0, 0, "-"]}, "iCallSV.checkBlackList": {"CheckIfItIsBlacklisted": [0, 1, 1, ""], "ReadBlackListFile": [0, 1, 1, ""]}, "iCallSV": {"Run_samblaster": [0, 0, 0, "-"], "filterAnnotatedSV": [0, 0, 0, "-"], "launch_FilterDellyCalls": [0, 0, 0, "-"], "launchThreads": [0, 0, 0, "-"], "combineVCF": [0, 0, 0, "-"], "FilterDellyCalls": [0, 0, 0, "-"], "iCallSV": [0, 0, 0, "-"], "Run_iAnnotateSV": [0, 0, 0, "-"], "Run_targetSeqView": [0, 0, 0, "-"], "sortbamByCoordinate": [0, 0, 0, "-"], "checkBlackList": [0, 0, 0, "-"], "dellyVcf2Tab": [0, 0, 0, "-"], "Run_Delly": [0, 0, 0, "-"], "makebamindex": [0, 0, 0, "-"], "checkHotSpotList": [0, 0, 0, "-"], "dellyVcf2targetSeqView": [0, 0, 0, "-"], "launch_Run_Delly": [0, 0, 0, "-"], "make_analysis_dir": [0, 0, 0, "-"], "checkparameters": [0, 0, 0, "-"], "mergeFinalFiles": [0, 0, 0, "-"], "sortbamByReadName": [0, 0, 0, "-"]}, "iCallSV.dellyVcf2targetSeqView": {"Convert2targetSeqView": [0, 1, 1, ""]}, "iCallSV.Run_targetSeqView": {"run": [0, 1, 1, ""]}, "iCallSV.Run_samblaster": {"run": [0, 1, 1, ""]}, "iCallSV.mergeFinalFiles": {"run": [0, 1, 1, ""]}, "iCallSV.Run_Delly": {"run": [0, 1, 1, ""]}, "iCallSV.checkparameters": {"checkEmpty": [0, 1, 1, ""], "checkDellyAnalysisType": [0, 1, 1, ""], "checkInt": [0, 1, 1, ""], "checkFile": [0, 1, 1, ""], "checkDir": [0, 1, 1, ""]}, "iCallSV.launch_FilterDellyCalls": {"launch_filterdellycalls_for_different_analysis_type": [0, 1, 1, ""]}, "iCallSV.sortbamByReadName": {"sortBam": [0, 1, 1, ""]}, "iCallSV.combineVCF": {"run": [0, 1, 1, ""]}, "iCallSV.launchThreads.myThread": {"run": [0, 3, 1, ""]}, "iCallSV.FilterDellyCalls": {"GetControlFlag": [0, 1, 1, ""], "run": [0, 1, 1, ""], "GetCaseFlag": [0, 1, 1, ""], "GetFilteredRecords": [0, 1, 1, ""]}, "iCallSV.filterAnnotatedSV": {"checkGeneListToKeep": [0, 1, 1, ""], "checkBlackListGene": [0, 1, 1, ""], "run": [0, 1, 1, ""], "checkEventInIntronFlag": [0, 1, 1, ""]}, "iCallSV.make_analysis_dir": {"makeOutputDir": [0, 1, 1, ""]}, "iCallSV.launch_Run_Delly": {"launch_delly_for_different_analysis_type": [0, 1, 1, ""]}, "iCallSV.dellyVcf2Tab": {"vcf2tab": [0, 1, 1, ""]}, "iCallSV.checkHotSpotList": {"CheckIfItIsHotspot": [0, 1, 1, ""], "ReadHotSpotFile": [0, 1, 1, ""]}, "iCallSV.launchThreads": {"print_time": [0, 1, 1, ""], "myThread": [0, 2, 1, ""]}, "iCallSV.makebamindex": {"MakeIndex": [0, 1, 1, ""]}, "iCallSV.Run_iAnnotateSV": {"run": [0, 1, 1, ""]}, "iCallSV.sortbamByCoordinate": {"sortBam": [0, 1, 1, ""]}}, "titleterms": {"filterannotatedsv": 0, "icallsv_dmp_wrapp": 0, "launchthread": 0, "citat": 1, "process": 0, "sortbambyreadnam": 0, "modul": 0, "submodul": 0, "indic": 1, "dataset": [0, 1], "packag": 0, "sampl": 0, "file": 0, "tabl": 1, "dellyvcf2targetseqview": 0, "run_iannot": 0, "checkparamet": 0, "impact": 0, "detect": [0, 1], "from": [0, 1], "transcript": 0, "configur": 0, "run_targetseqview": 0, "filterdellycal": 0, "data": 0, "content": 0, "launch_run_delli": 0, "take": 0, "run_samblast": 0, "checkhotspotlist": 0, "cdna": 0, "run_delli": 0, "run": 0, "format": 0, "sortbambycoordin": 0, "usag": 0, "checkblacklist": 0, "util": 0, "launch_filterdellycal": 0, "icallsv": [0, 1], "make_analysis_dir": 0, "mergefinalfil": 0, "pool": 0, "check_cdna_contamin": 0, "combinevcf": 0, "msk": 0, "requir": 0, "structur": [0, 1], "dellyvcf2tab": 0, "aberr": [0, 1], "quick": 0, "run_iannotatesv": 0, "chechk": 0, "makebamindex": 0}} \ No newline at end of file diff --git a/docs/_build/latex/iCallSV.tex b/docs/_build/latex/iCallSV.tex index 6cc2e6c..4ea4884 100644 --- a/docs/_build/latex/iCallSV.tex +++ b/docs/_build/latex/iCallSV.tex @@ -21,7 +21,7 @@ \title{iCallSV Documentation} -\date{June 06, 2016} +\date{June 07, 2016} \release{} \author{Author} \newcommand{\sphinxlogo}{} @@ -248,38 +248,38 @@ \section{Required Data Files} \section{Configuration File Format} \label{iCallSV:configuration-file-format} \begin{Verbatim}[commandchars=\\\{\}] -\PYGZsh{}\PYGZti{}\PYGZti{}\PYGZti{}Template configuration file to run iCallSV\PYGZti{}\PYGZti{}\PYGZti{}\PYGZsh{} -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to python executable \PYGZsh{}\PYGZsh{}\PYGZsh{} -[Python] +\PYG{c+c1}{\PYGZsh{}\PYGZti{}\PYGZti{}\PYGZti{}Template configuration file to run iCallSV\PYGZti{}\PYGZti{}\PYGZti{}\PYGZsh{}} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to python executable \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}Python\PYG{o}{]} PYTHON: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to R executable and R Lib \PYGZsh{}\PYGZsh{}\PYGZsh{} -[R] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to R executable and R Lib \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}R\PYG{o}{]} RHOME: RLIB: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to delly, bcftools executables and Version of delly (supports only 0.7.3)\PYGZsh{}\PYGZsh{}\PYGZsh{} -[SVcaller] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to delly, bcftools executables and Version of delly (supports only 0.7.3)\PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}SVcaller\PYG{o}{]} DELLY: DellyVersion: BCFTOOLS: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to hg19 Referece Fasta file \PYGZsh{}\PYGZsh{}\PYGZsh{} -[ReferenceFasta] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to hg19 Referece Fasta file \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}ReferenceFasta\PYG{o}{]} REFFASTA: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to file containing regions to exclude please follow Delly documentation for this \PYGZsh{}\PYGZsh{}\PYGZsh{} -[ExcludeRegion] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to file containing regions to exclude please follow Delly documentation for this \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}ExcludeRegion\PYG{o}{]} EXREGIONS: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to file containing regions to where lenient threshold will be used; and file containing genes to keep \PYGZsh{}\PYGZsh{}\PYGZsh{} -[HotSpotRegions] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to file containing regions to where lenient threshold will be used; and file containing genes to keep \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}HotSpotRegions\PYG{o}{]} HotspotFile: GenesToKeep: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to file containing regions/genes to filter \PYGZsh{}\PYGZsh{}\PYGZsh{} -[BlackListRegions] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to file containing regions/genes to filter \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}BlackListRegions\PYG{o}{]} BlackListFile: BlackListGenes: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to samtools executable \PYGZsh{}\PYGZsh{}\PYGZsh{} -[SAMTOOLS] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to samtools executable \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}SAMTOOLS\PYG{o}{]} SAMTOOLS: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation \PYGZsh{}\PYGZsh{}\PYGZsh{} -[iAnnotateSV] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}iAnnotateSV\PYG{o}{]} ANNOSV: GENOMEBUILD: DISTANCE: @@ -288,57 +288,57 @@ \section{Configuration File Format} CosmicCensus: RepeatRegionAnnotation: DGvAnnotations: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} TargetSeqView Parameters \PYGZsh{}\PYGZsh{}\PYGZsh{} -[TargetSeqView] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} TargetSeqView Parameters \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}TargetSeqView\PYG{o}{]} CalculateConfidenceScore: GENOMEBUILD: ReadLength: -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Parameters to run Delly \PYGZsh{}\PYGZsh{}\PYGZsh{} -[ParametersToRunDelly] +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} Parameters to run Delly \PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{o}{[}ParametersToRunDelly\PYG{o}{]} MAPQ: 20 NumberOfProcessors: 4 -[ParametersToFilterDellyResults] -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Allele Fraction Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{o}{[}ParametersToFilterDellyResults\PYG{o}{]} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Allele Fraction Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}} CaseAltFreqHotspot: 0.05 -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Total Case Coverage Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} -CaseCoverageHotspot = 5 -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Allele Fraction Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} -ControlAltFreqHotspot = 0 -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Allele Fraction\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} -CaseAltFreq: 0.08 -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Total Case Coverage\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} -CaseCoverage = 8 -\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Allele Fraction\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{} -ControlAltFreq = 0 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting Read\PYGZhy{}pairs \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Total Case Coverage Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{n+nv}{CaseCoverageHotspot} \PYG{o}{=} 5 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Allele Fraction Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{n+nv}{ControlAltFreqHotspot} \PYG{o}{=} 0 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Allele Fraction\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}} +CaseAltFreq: 0.10 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Total Case Coverage\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{n+nv}{CaseCoverage} \PYG{o}{=} 10 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Allele Fraction\PYGZsh{}\PYGZsh{}\PYGZsh{}\PYGZsh{}} +\PYG{n+nv}{ControlAltFreq} \PYG{o}{=} 0 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting Read\PYGZhy{}pairs \PYGZsh{}\PYGZsh{}\PYGZsh{}} OverallSupportingReads: 5 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting Read\PYGZhy{}pairs Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting Read\PYGZhy{}pairs Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{}} OverallSupportingReadsHotspot: 3 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting splitreads \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting splitreads \PYGZsh{}\PYGZsh{}\PYGZsh{}} OverallSupportingSplitReads: 0 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting splitreads Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Supporting splitreads Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{}} OverallSupportingSplitReadsHotspot: 0 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting Read\PYGZhy{}pairs \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting Read\PYGZhy{}pairs \PYGZsh{}\PYGZsh{}\PYGZsh{}} CaseSupportingReads: 2 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting splitreads \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting splitreads \PYGZsh{}\PYGZsh{}\PYGZsh{}} CaseSupportingSplitReads: 0 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting Read\PYGZhy{}pairs Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting Read\PYGZhy{}pairs Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{}} CaseSupportingReadsHotspot: 1 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting splitreads Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Case Supporting splitreads Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{}} CaseSupportingSplitReadsHotspot: 0 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting Read\PYGZhy{}pairs \PYGZsh{}\PYGZsh{}\PYGZsh{} -ControlSupportingReads: 5 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting Read\PYGZhy{}pairs Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{} -ControlSupportingReadsHotspot: 5 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting splitreads \PYGZsh{}\PYGZsh{}\PYGZsh{} -ControlSupportingSplitReads: 5 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting splitreads Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{} -ControlSupportingSplitReadsHotspot: 5 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Length of Structural Variant\PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting Read\PYGZhy{}pairs \PYGZsh{}\PYGZsh{}\PYGZsh{}} +ControlSupportingReads: 3 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting Read\PYGZhy{}pairs Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{}} +ControlSupportingReadsHotspot: 3 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting splitreads \PYGZsh{}\PYGZsh{}\PYGZsh{}} +ControlSupportingSplitReads: 3 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Control Supporting splitreads Hotspot \PYGZsh{}\PYGZsh{}\PYGZsh{}} +ControlSupportingSplitReadsHotspot: 3 +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Length of Structural Variant\PYGZsh{}\PYGZsh{}\PYGZsh{}} LengthOfSV: 500 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Mapping Quality Threshold\PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Mapping Quality Threshold\PYGZsh{}\PYGZsh{}\PYGZsh{}} OverallMapq: 20 -\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Mapping Quality Threshold Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{} +\PYG{c+c1}{\PYGZsh{}\PYGZsh{}\PYGZsh{}Overall Mapping Quality Threshold Hotspot\PYGZsh{}\PYGZsh{}\PYGZsh{}} OverallMapqHotspot: 5 \end{Verbatim} @@ -350,7 +350,7 @@ \section{Quick Usage} \end{Verbatim} \begin{Verbatim}[commandchars=\\\{\}] -\PYGZgt{} python iCallSV.py \PYGZhy{}h +python iCallSV.py \PYGZhy{}h usage: iCallSV.py [\PYGZhy{}h] [\PYGZhy{}v] [\PYGZhy{}V] \PYGZhy{}sc config.ini \PYGZhy{}abam caseBAMFile.bam \PYGZhy{}bbam controlBAMFile.bam \PYGZhy{}aId caseID \PYGZhy{}bId controlID \PYGZhy{}o @@ -395,10 +395,13 @@ \section{Quick Usage} \section{Utilities} \label{iCallSV:utilities} + +\subsection{Running iCallSV on MSK-IMPACT Pools} +\label{iCallSV:running-icallsv-on-msk-impact-pools} \textbf{This is only for MSK-IMPACT internal samples} \begin{Verbatim}[commandchars=\\\{\}] -\PYGZgt{} python iCallSV\PYGZus{}dmp\PYGZus{}wrapper.py \PYGZhy{}h +python iCallSV\PYGZus{}dmp\PYGZus{}wrapper.py \PYGZhy{}h usage: iCallSV\PYGZus{}dmp\PYGZus{}wrapper.py \PYG{o}{[}options\PYG{o}{]} @@ -429,9 +432,55 @@ \section{Utilities} \end{Verbatim} +\subsection{Taking the iCallSV and chechking for processed transcript/cDNA in samples} +\label{iCallSV:taking-the-icallsv-and-chechking-for-processed-transcript-cdna-in-samples} +\begin{Verbatim}[commandchars=\\\{\}] +python check\PYGZus{}cDNA\PYGZus{}contamination.py \PYGZhy{}h +usage: check\PYGZus{}cDNA\PYGZus{}contamination.py \PYG{o}{[}options\PYG{o}{]} + +Calculate cDNA contamination per sample based of the Structural Variants +Pipeline result + +optional arguments: + \PYGZhy{}h, \PYGZhy{}\PYGZhy{}help show this \PYG{n+nb}{help} message and \PYG{n+nb}{exit} + \PYGZhy{}v, \PYGZhy{}\PYGZhy{}verbose make lots of noise \PYG{o}{[}default\PYG{o}{]} + \PYGZhy{}s SVfile.txt, \PYGZhy{}\PYGZhy{}svFile SVfile.txt + Location of the structural variant file to be used + \PYGZhy{}o cDNA\PYGZus{}contamination, \PYGZhy{}\PYGZhy{}outputFileName cDNA\PYGZus{}contamination + Full path name \PYG{k}{for} the output file +\end{Verbatim} + + \section{Submodules} \label{iCallSV:submodules} +\subsection{iCallSV.iCallSV module} +\label{iCallSV:icallsv-icallsv-module}\label{iCallSV:module-iCallSV.iCallSV}\index{iCallSV.iCallSV (module)} + +\subsubsection{iCallSV} +\label{iCallSV:icallsv}\begin{quote}\begin{description} +\item[{Description}] \leavevmode +iCallSV is a wrapper to the iCallSV package which facilitates calling structural variants from Next Generation Sequencing methods such as Illumina + +\item[{author}] \leavevmode +Ronak H Shah + +\item[{copyright}] \leavevmode\begin{enumerate} +\setcounter{enumi}{2} +\item {} +2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved. + +\end{enumerate} + +\item[{license}] \leavevmode +Apache License 2.0 + +\item[{contact}] \leavevmode +\href{mailto:rons.shah@gmail.com}{rons.shah@gmail.com} + +\end{description}\end{quote} + + \subsection{iCallSV.FilterDellyCalls module} \label{iCallSV:icallsv-filterdellycalls-module}\label{iCallSV:module-iCallSV.FilterDellyCalls}\index{iCallSV.FilterDellyCalls (module)} @@ -1337,215 +1386,11 @@ \subsubsection{filterAnnotatedSV} -\subsection{iCallSV.iCallSV module} -\label{iCallSV:icallsv-icallsv-module}\label{iCallSV:module-iCallSV.iCallSV}\index{iCallSV.iCallSV (module)} - -\subsubsection{iCallSV} -\label{iCallSV:icallsv}\begin{quote}\begin{description} -\item[{Description}] \leavevmode -iCallSV is a wrapper to the iCallSV package which facilitates calling structural variants from Next Generation Sequencing methods such as Illumina - -\item[{author}] \leavevmode -Ronak H Shah - -\item[{copyright}] \leavevmode\begin{enumerate} -\setcounter{enumi}{2} -\item {} -2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved. - -\end{enumerate} - -\item[{license}] \leavevmode -Apache License 2.0 - -\item[{contact}] \leavevmode -\href{mailto:rons.shah@gmail.com}{rons.shah@gmail.com} - -\end{description}\end{quote} - - -\subsection{iCallSV.iCallSV\_dmp\_wrapper module} -\label{iCallSV:icallsv-icallsv-dmp-wrapper-module}\label{iCallSV:module-iCallSV.iCallSV_dmp_wrapper}\index{iCallSV.iCallSV\_dmp\_wrapper (module)} - -\subsubsection{iCallSV\_dmp\_wrapper} -\label{iCallSV:icallsv-dmp-wrapper}\begin{quote}\begin{description} -\item[{Description}] \leavevmode -iCallSV is a wrapper to run the iCallSV package on MSKCC data - -\item[{author}] \leavevmode -Ronak H Shah - -\item[{copyright}] \leavevmode\begin{enumerate} -\setcounter{enumi}{2} -\item {} -2015-2016 by Ronak H Shah for Memorial Sloan Kettering Cancer Center. All rights reserved. - -\end{enumerate} - -\item[{license}] \leavevmode -Apache License 2.0 - -\item[{contact}] \leavevmode -\href{mailto:rons.shah@gmail.com}{rons.shah@gmail.com} - -\item[{deffield updated}] \leavevmode -Updated - -\end{description}\end{quote} -\index{RunJob() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.RunJob}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{RunJob}}{\emph{cmd}}{} -Given a command run the job. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\textbf{\texttt{cmd}} (\emph{\texttt{str}}) -- str of command to be run on the local machine - -\item[{Returns}] \leavevmode -None - -\item[{Return type}] \leavevmode -None - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{RunPerPool() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.RunPerPool}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{RunPerPool}}{\emph{titleFile}, \emph{outdir}, \emph{HSmetricsFileList}, \emph{bamFileList}, \emph{args}}{} -This will run the pool to be analyzed. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\textbf{\texttt{titleFile}} (\emph{\texttt{str}}) -- str of meta information file - -\item {} -\textbf{\texttt{outdir}} (\emph{\texttt{str}}) -- str of output directory - -\item {} -\textbf{\texttt{HSmetricsFileList}} (\emph{\texttt{list}}) -- list of picard hsmetrics files - -\item {} -\textbf{\texttt{bamFileList}} (\emph{\texttt{list}}) -- list of bam files - -\item {} -\textbf{\texttt{args}} (\emph{\texttt{Namespace}}) -- Namespace of args to get other variables - -\end{itemize} - -\item[{Returns}] \leavevmode -None - -\item[{Return type}] \leavevmode -None - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{SelectNormal() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.SelectNormal}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{SelectNormal}}{\emph{normal}, \emph{poolnormal}}{} -Select the best possible normal. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\textbf{\texttt{normal}} (\emph{\texttt{str}}) -- str of match normal - -\item {} -\textbf{\texttt{poolnormal}} (\emph{\texttt{str}}) -- str of pool normal - -\end{itemize} - -\item[{Returns}] \leavevmode -str with decision whether to run matched or unmatched - -\item[{Return type}] \leavevmode -str - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{SetupRun() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.SetupRun}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{SetupRun}}{\emph{poolName}, \emph{args}}{} -This will setup the run to be analyzed. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\textbf{\texttt{poolName}} (\emph{\texttt{str}}) -- str of pool to be analyzed - -\item {} -\textbf{\texttt{args}} (\emph{\texttt{Namespace}}) -- Namespace of args to get other variables - -\end{itemize} - -\item[{Returns}] \leavevmode -Multiple objects - -\item[{Return type}] \leavevmode -list - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{getSubDirs() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.getSubDirs}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{getSubDirs}}{\emph{dirLocation}}{} -Get all sub directories. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode -\textbf{\texttt{dirLocation}} (\emph{\texttt{str}}) -- str of directory location - -\item[{Returns}] \leavevmode -list of all sub directories - -\item[{Return type}] \leavevmode -list - -\end{description}\end{quote} - -\end{fulllineitems} - -\index{main() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.main}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{main}}{}{} -\end{fulllineitems} - -\index{processor() (in module iCallSV.iCallSV\_dmp\_wrapper)} - -\begin{fulllineitems} -\phantomsection\label{iCallSV:iCallSV.iCallSV_dmp_wrapper.processor}\pysiglinewithargsret{\code{iCallSV.iCallSV\_dmp\_wrapper.}\bfcode{processor}}{\emph{i}, \emph{jobqueue}}{} -Operate on a jobqueue. -\begin{quote}\begin{description} -\item[{Parameters}] \leavevmode\begin{itemize} -\item {} -\textbf{\texttt{i}} (\emph{\texttt{int}}) -- count of the job - -\item {} -\textbf{\texttt{jobqueue}} (\emph{\texttt{Namespace}}) -- Namespace for jobqueue - -\end{itemize} - -\item[{Returns}] \leavevmode -None - -\item[{Return type}] \leavevmode -None - -\end{description}\end{quote} - -\end{fulllineitems} - +\subsection{iCallSV.utilities.iCallSV\_dmp\_wrapper module} +\label{iCallSV:icallsv-utilities-icallsv-dmp-wrapper-module} +\subsection{iCallSV.utilities.check\_cDNA\_contamination module} +\label{iCallSV:icallsv-utilities-check-cdna-contamination-module} \subsection{iCallSV.launchThreads module} \label{iCallSV:icallsv-launchthreads-module}\label{iCallSV:module-iCallSV.launchThreads}\index{iCallSV.launchThreads (module)} @@ -1840,7 +1685,6 @@ \chapter{Indices and tables} \item {\texttt{iCallSV.filterAnnotatedSV}}, \pageref{iCallSV:module-iCallSV.filterAnnotatedSV} \item {\texttt{iCallSV.FilterDellyCalls}}, \pageref{iCallSV:module-iCallSV.FilterDellyCalls} \item {\texttt{iCallSV.iCallSV}}, \pageref{iCallSV:module-iCallSV.iCallSV} -\item {\texttt{iCallSV.iCallSV\_dmp\_wrapper}}, \pageref{iCallSV:module-iCallSV.iCallSV_dmp_wrapper} \item {\texttt{iCallSV.launch\_FilterDellyCalls}}, \pageref{iCallSV:module-iCallSV.launch_FilterDellyCalls} \item {\texttt{iCallSV.launch\_Run\_Delly}}, \pageref{iCallSV:module-iCallSV.launch_Run_Delly} \item {\texttt{iCallSV.launchThreads}}, \pageref{iCallSV:module-iCallSV.launchThreads} diff --git a/docs/iCallSV.rst b/docs/iCallSV.rst index 210668a..8b8d8a8 100644 --- a/docs/iCallSV.rst +++ b/docs/iCallSV.rst @@ -57,7 +57,7 @@ This files are given in the ``data`` folder inside iCallSV. Configuration File Format ========================= -.. code-block:: ini +.. code-block:: sh #~~~Template configuration file to run iCallSV~~~# #### Path to python executable ### @@ -116,9 +116,9 @@ Configuration File Format ####Control Allele Fraction Hotspot#### ControlAltFreqHotspot = 0 ####Case Allele Fraction#### - CaseAltFreq: 0.08 + CaseAltFreq: 0.10 ####Total Case Coverage##### - CaseCoverage = 8 + CaseCoverage = 10 ####Control Allele Fraction#### ControlAltFreq = 0 ###Overall Supporting Read-pairs ### @@ -138,13 +138,13 @@ Configuration File Format ###Case Supporting splitreads Hotspot ### CaseSupportingSplitReadsHotspot: 0 ###Control Supporting Read-pairs ### - ControlSupportingReads: 5 + ControlSupportingReads: 3 ###Control Supporting Read-pairs Hotspot ### - ControlSupportingReadsHotspot: 5 + ControlSupportingReadsHotspot: 3 ###Control Supporting splitreads ### - ControlSupportingSplitReads: 5 + ControlSupportingSplitReads: 3 ###Control Supporting splitreads Hotspot ### - ControlSupportingSplitReadsHotspot: 5 + ControlSupportingSplitReadsHotspot: 3 ###Length of Structural Variant### LengthOfSV: 500 ###Overall Mapping Quality Threshold### @@ -162,9 +162,10 @@ Quick Usage python iCallSV.py -sc /path/to/template.ini -abam /path/to/casebamFile -bbam /path/to/controlbamFile -aId caseID -bId controlId -o /path/to/output/directory -op prefix_for_the_output_files + .. code-block:: sh - > python iCallSV.py -h + python iCallSV.py -h usage: iCallSV.py [-h] [-v] [-V] -sc config.ini -abam caseBAMFile.bam -bbam controlBAMFile.bam -aId caseID -bId controlID -o @@ -207,11 +208,15 @@ Quick Usage Utilities ========= + +Running iCallSV on MSK-IMPACT Pools +----------------------------------- + **This is only for MSK-IMPACT internal samples** .. code-block:: sh - > python iCallSV_dmp_wrapper.py -h + python iCallSV_dmp_wrapper.py -h usage: iCallSV_dmp_wrapper.py [options] @@ -239,11 +244,39 @@ Utilities -v, --verbose make lots of noise [default] -o /somepath/output, --outDir /somepath/output Full Path to the output dir. - + + +Taking the iCallSV and chechking for processed transcript/cDNA in samples +------------------------------------------------------------------------- + +.. code-block:: sh + + python check_cDNA_contamination.py -h + usage: check_cDNA_contamination.py [options] + + Calculate cDNA contamination per sample based of the Structural Variants + Pipeline result + + optional arguments: + -h, --help show this help message and exit + -v, --verbose make lots of noise [default] + -s SVfile.txt, --svFile SVfile.txt + Location of the structural variant file to be used + -o cDNA_contamination, --outputFileName cDNA_contamination + Full path name for the output file + Submodules ========== +iCallSV.iCallSV module +---------------------- + +.. automodule:: iCallSV.iCallSV + :members: + :undoc-members: + :show-inheritance: + iCallSV.FilterDellyCalls module ------------------------------- @@ -340,18 +373,19 @@ iCallSV.filterAnnotatedSV module :undoc-members: :show-inheritance: -iCallSV.iCallSV module ----------------------- -.. automodule:: iCallSV.iCallSV +iCallSV.utilities.iCallSV_dmp_wrapper module +-------------------------------------------- + +.. automodule:: iCallSV.utilities.iCallSV_dmp_wrapper :members: :undoc-members: :show-inheritance: -iCallSV.iCallSV_dmp_wrapper module ----------------------------------- +iCallSV.utilities.check_cDNA_contamination module +------------------------------------------------- -.. automodule:: iCallSV.iCallSV_dmp_wrapper +.. automodule:: iCallSV.utilities.check_cDNA_contamination :members: :undoc-members: :show-inheritance: diff --git a/iCallSV/configuration/template.ini b/iCallSV/configuration/template.ini index d16a967..50307c2 100644 --- a/iCallSV/configuration/template.ini +++ b/iCallSV/configuration/template.ini @@ -1,25 +1,34 @@ -#Template configuration file to run iCallSV +#~~~Template configuration file to run iCallSV~~~# +#### Path to python executable ### [Python] PYTHON: +#### Path to R executable and R Lib ### [R] -RHOME: -RLIB: +RHOME: +RLIB: +#### Path to delly, bcftools executables and Version of delly (supports only 0.7.3)### [SVcaller] DELLY: DellyVersion: BCFTOOLS: +#### Path to hg19 Referece Fasta file ### [ReferenceFasta] REFFASTA: +#### Path to file containing regions to exclude please follow Delly documentation for this ### [ExcludeRegion] EXREGIONS: +#### Path to file containing regions to where lenient threshold will be used; and file containing genes to keep ### [HotSpotRegions] HotspotFile: GenesToKeep: +#### Path to file containing regions/genes to filter ### [BlackListRegions] BlackListFile: BlackListGenes: +#### Path to samtools executable ### [SAMTOOLS] SAMTOOLS: +#### Path to iAnnotateSV.py and all its required files, please follow iAnnotateSV documentation ### [iAnnotateSV] ANNOSV: GENOMEBUILD: @@ -29,10 +38,12 @@ UNIPROTFILE: CosmicCensus: RepeatRegionAnnotation: DGvAnnotations: +#### TargetSeqView Parameters ### [TargetSeqView] CalculateConfidenceScore: GENOMEBUILD: ReadLength: +#### Parameters to run Delly ### [ParametersToRunDelly] MAPQ: 20 NumberOfProcessors: 4 @@ -44,9 +55,9 @@ CaseCoverageHotspot = 5 ####Control Allele Fraction Hotspot#### ControlAltFreqHotspot = 0 ####Case Allele Fraction#### -CaseAltFreq: 0.08 +CaseAltFreq: 0.10 ####Total Case Coverage##### -CaseCoverage = 8 +CaseCoverage = 10 ####Control Allele Fraction#### ControlAltFreq = 0 ###Overall Supporting Read-pairs ### @@ -66,16 +77,16 @@ CaseSupportingReadsHotspot: 1 ###Case Supporting splitreads Hotspot ### CaseSupportingSplitReadsHotspot: 0 ###Control Supporting Read-pairs ### -ControlSupportingReads: 5 +ControlSupportingReads: 3 ###Control Supporting Read-pairs Hotspot ### -ControlSupportingReadsHotspot: 5 +ControlSupportingReadsHotspot: 3 ###Control Supporting splitreads ### -ControlSupportingSplitReads: 5 +ControlSupportingSplitReads: 3 ###Control Supporting splitreads Hotspot ### -ControlSupportingSplitReadsHotspot: 5 +ControlSupportingSplitReadsHotspot: 3 ###Length of Structural Variant### LengthOfSV: 500 ###Overall Mapping Quality Threshold### OverallMapq: 20 ###Overall Mapping Quality Threshold Hotspot### -OverallMapqHotspot: 5 +OverallMapqHotspot: 5 \ No newline at end of file diff --git a/iCallSV/utilities/check_cDNA_contamination.py b/iCallSV/utilities/check_cDNA_contamination.py new file mode 100755 index 0000000..43a3965 --- /dev/null +++ b/iCallSV/utilities/check_cDNA_contamination.py @@ -0,0 +1,116 @@ +""" +Created on 11/01/2015. +@author: Ronak H Shah +###Required Input columns in the structural variant file +TumorId NormalId Chr1 Pos1 Chr2 Pos2 SV_Type Gene1 Gene2 Transcript1 Transcript2 Site1Description Site2Description Fusion Confidence Comments Connection_Type SV_LENGTH MAPQ PairEndReadSupport SplitReadSupport BrkptType ConsensusSequence TumorVariantCount TumorSplitVariantCount TumorReadCount TumorGenotypeQScore NormalVariantCount NormalSplitVariantCount NormalReadCount NormalGenotypeQScore +###Output columns +"TumorId Genes_with_cDNA_contamination" +""" + +import argparse +import pandas as pd +import time +import sys + +def main(): + parser = argparse.ArgumentParser( + prog='check_cDNA_contamination.py', + description='Calculate cDNA contamination per sample based of the Structural Variants Pipeline result', + usage='%(prog)s [options]') + parser.add_argument( + "-v", + "--verbose", + action="store_true", + dest="verbose", + default=True, + help="make lots of noise [default]") + parser.add_argument( + "-s", + "--svFile", + action="store", + dest="svFilename", + required=True, + metavar='SVfile.txt', + help="Location of the structural variant file to be used") + parser.add_argument( + "-o", + "--outputFileName", + action="store", + dest="outFileName", + required=True, + metavar='cDNA_contamination', + help="Full path name for the output file") + args = parser.parse_args() + # Read the structural variant file + (dataDF) = ReadSV(args.svFilename, args) + # Process the structural variant file + (dataDict) = ProcessData(dataDF) + # Write results in the output file specified + WriteResults(dataDict, args) +# Read the structural variant file +def ReadSV(file, args): + dataDF = pd.read_csv(file, sep='\t', header=0, keep_default_na='True') + return(dataDF) +# Process the pandas dataframe to get contaminataed genes +def ProcessData(dataDF): + # Group the data by tumor id, gene1 name, type of sv + gDF = dataDF.groupby(['TumorId', 'Gene1', 'SV_Type']).groups + # initialize and empty dictionary + resultdict = {} + # traverse through gDF dictionary + for key, value in gDF.iteritems(): + # get name of the sample its meta data + (tumorID, gene1, svtype) = key + # check how many entries are there of sv type + entires = len(value) + # initialize the number of cDNA events and a list of corresponding genes + count = 0 + geneList = [] + # run only if the event is deletion and has more then 2 entries for the same gene + if(svtype == 'DEL' and entires >= 2): + for idx in value: + record = dataDF.loc[idx] + site1 = str(record.loc['Site1Description']) + site2 = str(record.loc['Site2Description']) + fusion = str(record.loc['Fusion']) + brkptType = str(record.loc['BrkptType']) + # Skip entries that are within exon or are in-frame or out-of frame or are IMPRECISE. + if(("Exon" in site1 and "Exon" in site2) or ("in frame" in fusion or "out of frame" in fusion) or (brkptType == "IMPRECISE")): + continue + else: + count = count + 1 + # count the entries,genes and fill the resultdict + if tumorID in resultdict: + geneList = resultdict[tumorID] + if(count >= 2): + geneList.append(gene1) + resultdict[tumorID] = geneList + else: + if(count >= 2): + geneList.append(gene1) + resultdict[tumorID] = geneList + return(resultdict) + +def WriteResults(dataDict, args): + if not dataDict: + print "No contamination found\n" + return() + else: + # Convert the dictionaries values which are as list to string + for key, value in dataDict.iteritems(): + newvalue = ', '.join(value) + dataDict[key] = newvalue + + resultDF = pd.DataFrame(dataDict.items(), columns=['TumorId', 'Genes_with_cDNA_contamination']).sort('TumorId') + # Print to TSV file + resultDF.to_csv(args.outFileName, sep='\t', index=False) + return() + +#Run the main program +if __name__ == "__main__": + start_time = time.time() + main() + end_time = time.time() + seconds = end_time - start_time + print "Elapsed time was ", time.strftime("%H:%M:%S", time.gmtime(seconds)) + \ No newline at end of file diff --git a/iCallSV/iCallSV_dmp_wrapper.py b/iCallSV/utilities/iCallSV_dmp_wrapper.py similarity index 100% rename from iCallSV/iCallSV_dmp_wrapper.py rename to iCallSV/utilities/iCallSV_dmp_wrapper.py