Skip to content

Commit ec01c98

Browse files
authored
Merge pull request #120 from jiaan-yu/rnaseq
Add RNASeq Fusion Workflow related tools
2 parents b63db3d + f957457 commit ec01c98

File tree

20 files changed

+979
-551
lines changed

20 files changed

+979
-551
lines changed

janis_bioinformatics/tools/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
BioinformaticsWorkflow,
44
)
55
from janis_bioinformatics.tools import (
6+
arriba,
67
babrahambioinformatics,
78
biobambam,
89
bcftools,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from .run_arriba.versions import RunArriba_2_1_0, RunArriba_1_1_0
2+
from .draw_fusions.versions import ArribaDrawFusions_2_1_0, ArribaDrawFusions_1_1_0
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from abc import ABC, abstractmethod
2+
3+
from janis_bioinformatics.tools import BioinformaticsTool
4+
5+
6+
class ArribaBase(BioinformaticsTool, ABC):
7+
def tool_provider(self):
8+
return "Arriba"
9+
10+
@classmethod
11+
def base_command(cls):
12+
return ["", cls.arriba_command()]
13+
14+
@classmethod
15+
@abstractmethod
16+
def arriba_command(cls):
17+
raise Exception("Unknown error occured")
18+
19+
def inputs(self):
20+
return []
21+
22+
def doc(self):
23+
return """\
24+
Arriba is a command-line tool for the detection of gene fusions from RNA-Seq \
25+
data. It was developed for the use in a clinical research setting.""".strip()
26+
27+
@abstractmethod
28+
def container(self):
29+
raise Exception(
30+
"An error likely occurred when resolving the method order for docker for the facets classes "
31+
"or you're trying to execute the docker method of the base class (ie, don't do that). "
32+
"The method order resolution must preference facets subclasses, "
33+
"and the subclass must contain a definition for docker."
34+
)

janis_bioinformatics/tools/arriba/draw_fusions/__init__.py

Whitespace-only changes.
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
from abc import ABC
2+
from datetime import datetime
3+
4+
from janis_bioinformatics.tools.bioinformaticstoolbase import BioinformaticsTool
5+
from janis_unix import Csv, Tsv
6+
7+
from janis_bioinformatics.data_types import BamBai
8+
from janis_core import (
9+
CommandTool,
10+
ToolInput,
11+
ToolOutput,
12+
File,
13+
Boolean,
14+
String,
15+
Int,
16+
Double,
17+
Float,
18+
InputSelector,
19+
Filename,
20+
ToolMetadata,
21+
InputDocumentation,
22+
Array,
23+
)
24+
from janis_bioinformatics.tools.arriba.base import ArribaBase
25+
26+
27+
class ArribaDrawFusionsBase(ArribaBase, ABC):
28+
@classmethod
29+
def arriba_command(self):
30+
return "/usr/local/bin/draw_fusions.R"
31+
32+
def friendly_name(self) -> str:
33+
return "Arriba: DrawFusions"
34+
35+
def tool(self) -> str:
36+
return "ArribaDrawFusions"
37+
38+
def inputs(self):
39+
return [
40+
ToolInput(
41+
tag="annotation",
42+
input_type=File(),
43+
prefix="--annotation=",
44+
separate_value_from_prefix=False,
45+
doc="exonsFile",
46+
),
47+
ToolInput(
48+
tag="fusions",
49+
input_type=File(),
50+
prefix="--fusions=",
51+
separate_value_from_prefix=False,
52+
doc="fusionsFile",
53+
),
54+
ToolInput(
55+
tag="outputFilename",
56+
input_type=Filename(extension=".pdf"),
57+
prefix="--output=",
58+
separate_value_from_prefix=False,
59+
doc="outputFile",
60+
),
61+
ToolInput(
62+
tag="alignments",
63+
input_type=BamBai(optional=True),
64+
prefix="--alignments=",
65+
separate_value_from_prefix=False,
66+
doc="alignmentsFile",
67+
),
68+
ToolInput(
69+
tag="cytobands",
70+
input_type=File(optional=True),
71+
prefix="--cytobands=",
72+
separate_value_from_prefix=False,
73+
doc="cytobandsFile",
74+
),
75+
ToolInput(
76+
tag="minConfidenceForCircosPlot",
77+
input_type=String(optional=True),
78+
prefix="--minConfidenceForCircosPlot=",
79+
separate_value_from_prefix=False,
80+
doc="",
81+
),
82+
ToolInput(
83+
tag="proteinDomains",
84+
input_type=File(optional=True),
85+
prefix="--proteinDomains=",
86+
separate_value_from_prefix=False,
87+
doc="proteinDomainsFile",
88+
),
89+
ToolInput(
90+
tag="squishIntrons",
91+
input_type=Boolean(optional=True),
92+
prefix="--squishIntrons=",
93+
separate_value_from_prefix=False,
94+
doc="",
95+
),
96+
ToolInput(
97+
tag="printExonLabels",
98+
input_type=Boolean(optional=True),
99+
prefix="--printExonLabels=",
100+
separate_value_from_prefix=False,
101+
doc="",
102+
),
103+
ToolInput(
104+
tag="renderThreeDEffect",
105+
input_type=Boolean(optional=True),
106+
prefix="--render3dEffect=",
107+
separate_value_from_prefix=False,
108+
doc="",
109+
),
110+
ToolInput(
111+
tag="pdfWidth",
112+
input_type=Float(optional=True),
113+
prefix="--pdfWidth=",
114+
separate_value_from_prefix=False,
115+
doc="",
116+
),
117+
ToolInput(
118+
tag="pdfHeight",
119+
input_type=Float(optional=True),
120+
prefix="--pdfHeight=",
121+
separate_value_from_prefix=False,
122+
doc="",
123+
),
124+
ToolInput(
125+
tag="color_one",
126+
input_type=String(optional=True),
127+
prefix="--color1=",
128+
separate_value_from_prefix=False,
129+
doc="",
130+
),
131+
ToolInput(
132+
tag="color_two",
133+
input_type=String(optional=True),
134+
prefix="--color2=",
135+
separate_value_from_prefix=False,
136+
doc="",
137+
),
138+
ToolInput(
139+
tag="mergeDomainsOverlappingBy",
140+
input_type=Float(optional=True),
141+
prefix="--mergeDomainsOverlappingBy=",
142+
separate_value_from_prefix=False,
143+
doc="",
144+
),
145+
ToolInput(
146+
tag="optimizeDomainColors",
147+
input_type=Boolean(optional=True),
148+
prefix="--optimizeDomainColors=",
149+
separate_value_from_prefix=False,
150+
doc="",
151+
),
152+
ToolInput(
153+
tag="fontSize",
154+
input_type=Int(optional=True),
155+
prefix="--fontSize=",
156+
separate_value_from_prefix=False,
157+
doc="",
158+
),
159+
ToolInput(
160+
tag="showIntergenicVicinity",
161+
input_type=Int(optional=True),
162+
prefix="--showIntergenicVicinity=",
163+
separate_value_from_prefix=False,
164+
doc="",
165+
),
166+
ToolInput(
167+
tag="transcriptSelection",
168+
input_type=String(optional=True),
169+
prefix="--transcriptSelection=",
170+
separate_value_from_prefix=False,
171+
doc="",
172+
),
173+
]
174+
175+
def outputs(self):
176+
return [ToolOutput("out", File, selector=InputSelector("outputFilename"))]
177+
178+
def bind_metadata(self):
179+
return ToolMetadata(
180+
contributors=["Jiaan Yu"],
181+
dateCreated=datetime(2021, 3, 15),
182+
dateUpdated=datetime(2021, 3, 15),
183+
documentation="""
184+
Arriba comes with an R script draw_fusions.R that renders publication-quality
185+
visualizations of the transcripts involved in predicted fusions. It generates
186+
a PDF file with one page for each predicted fusion. Each page depicts the
187+
fusion partners, their orientation, the retained exons in the fusion
188+
transcript, statistics about the number of supporting reads, and - if the
189+
column fusion_transcript has a value - an excerpt of the sequence around the
190+
breakpoint.
191+
""",
192+
)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from .base import ArribaDrawFusionsBase
2+
from ..versions import Arriba_1_1_0, Arriba_2_1_0
3+
4+
5+
class ArribaDrawFusions_1_1_0(Arriba_1_1_0, ArribaDrawFusionsBase):
6+
pass
7+
8+
9+
class ArribaDrawFusions_2_1_0(Arriba_2_1_0, ArribaDrawFusionsBase):
10+
pass

janis_bioinformatics/tools/arriba/run_arriba/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)