Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Mirrors
biopet.biopet
Commits
10d0ce96
Commit
10d0ce96
authored
Dec 21, 2015
by
Peter van 't Hof
Browse files
Adding merge strategies
parent
60615f7d
Changes
4
Show whitespace changes
Inline
Side-by-side
public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala
View file @
10d0ce96
...
@@ -65,10 +65,10 @@ class MergeSamFiles(val root: Configurable) extends Picard {
...
@@ -65,10 +65,10 @@ class MergeSamFiles(val root: Configurable) extends Picard {
object
MergeSamFiles
{
object
MergeSamFiles
{
/** Returns default MergeSamFiles */
/** Returns default MergeSamFiles */
def
apply
(
root
:
Configurable
,
input
:
List
[
File
],
output
Dir
:
File
,
sortOrder
:
String
=
null
)
:
MergeSamFiles
=
{
def
apply
(
root
:
Configurable
,
input
:
List
[
File
],
output
File
:
File
,
sortOrder
:
String
=
null
)
:
MergeSamFiles
=
{
val
mergeSamFiles
=
new
MergeSamFiles
(
root
)
val
mergeSamFiles
=
new
MergeSamFiles
(
root
)
mergeSamFiles
.
input
=
input
mergeSamFiles
.
input
=
input
mergeSamFiles
.
output
=
new
File
(
outputDir
,
input
.
head
.
getName
.
stripSuffix
(
".bam"
).
stripSuffix
(
".sam"
)
+
".merge.bam"
)
mergeSamFiles
.
output
=
outputFile
if
(
sortOrder
==
null
)
mergeSamFiles
.
sortOrder
=
"coordinate"
if
(
sortOrder
==
null
)
mergeSamFiles
.
sortOrder
=
"coordinate"
else
mergeSamFiles
.
sortOrder
=
sortOrder
else
mergeSamFiles
.
sortOrder
=
sortOrder
mergeSamFiles
mergeSamFiles
...
...
public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala
View file @
10d0ce96
...
@@ -244,7 +244,7 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
...
@@ -244,7 +244,7 @@ class Mapping(val root: Configurable) extends QScript with SummaryQScript with S
add
(
md
)
add
(
md
)
addSummarizable
(
md
,
"mark_duplicates"
)
addSummarizable
(
md
,
"mark_duplicates"
)
}
else
if
(
skipMarkduplicates
&&
chunking
)
{
}
else
if
(
skipMarkduplicates
&&
chunking
)
{
val
mergeSamFile
=
MergeSamFiles
(
this
,
bamFiles
,
outputDir
)
val
mergeSamFile
=
MergeSamFiles
(
this
,
bamFiles
,
new
File
(
outputDir
,
outputName
+
".merge.bam"
)
)
add
(
mergeSamFile
)
add
(
mergeSamFile
)
bamFile
=
mergeSamFile
.
output
bamFile
=
mergeSamFile
.
output
}
}
...
...
public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/MultisampleMapping.scala
View file @
10d0ce96
...
@@ -5,7 +5,7 @@ import java.io.File
...
@@ -5,7 +5,7 @@ import java.io.File
import
htsjdk.samtools.SamReaderFactory
import
htsjdk.samtools.SamReaderFactory
import
nl.lumc.sasc.biopet.core.
{
PipelineCommand
,
Reference
,
MultiSampleQScript
}
import
nl.lumc.sasc.biopet.core.
{
PipelineCommand
,
Reference
,
MultiSampleQScript
}
import
nl.lumc.sasc.biopet.extensions.Ln
import
nl.lumc.sasc.biopet.extensions.Ln
import
nl.lumc.sasc.biopet.extensions.picard.
{
AddOrReplaceReadGroups
,
SamToFastq
}
import
nl.lumc.sasc.biopet.extensions.picard.
{
MarkDuplicates
,
MergeSamFiles
,
AddOrReplaceReadGroups
,
SamToFastq
}
import
nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics
import
nl.lumc.sasc.biopet.pipelines.bammetrics.BamMetrics
import
nl.lumc.sasc.biopet.utils.Logging
import
nl.lumc.sasc.biopet.utils.Logging
import
nl.lumc.sasc.biopet.utils.config.Configurable
import
nl.lumc.sasc.biopet.utils.config.Configurable
...
@@ -21,11 +21,20 @@ class MultisampleMapping(val root: Configurable) extends QScript
...
@@ -21,11 +21,20 @@ class MultisampleMapping(val root: Configurable) extends QScript
with
Reference
{
qscript
=>
with
Reference
{
qscript
=>
def
this
()
=
this
(
null
)
def
this
()
=
this
(
null
)
def
mergeStrategy
:
MultisampleMapping.MergeStrategy.Value
=
{
val
value
:
String
=
config
(
"merge_strategy"
,
default
=
"preprocessmarkduplicates"
)
MultisampleMapping
.
MergeStrategy
.
values
.
find
(
_
.
toString
.
toLowerCase
==
value
)
match
{
case
Some
(
v
)
=>
v
case
_
=>
throw
new
IllegalArgumentException
(
s
"merge_strategy '$value' does not exist"
)
}
}
def
init
:
Unit
=
{
def
init
:
Unit
=
{
}
}
def
biopetScript
:
Unit
=
{
def
biopetScript
:
Unit
=
{
addSamplesJobs
()
// This executes jobs for all samples
addSamplesJobs
()
// This executes jobs for all samples
addSummaryJobs
()
}
}
def
addMultiSampleJobs
:
Unit
=
{
def
addMultiSampleJobs
:
Unit
=
{
...
@@ -66,6 +75,8 @@ class MultisampleMapping(val root: Configurable) extends QScript
...
@@ -66,6 +75,8 @@ class MultisampleMapping(val root: Configurable) extends QScript
case
_
=>
None
case
_
=>
None
}
}
def
preProcessBam
=
bamFile
def
addJobs
:
Unit
=
{
def
addJobs
:
Unit
=
{
if
(
inputR1
.
isDefined
)
{
if
(
inputR1
.
isDefined
)
{
mapping
.
foreach
{
m
=>
mapping
.
foreach
{
m
=>
...
@@ -139,8 +150,29 @@ class MultisampleMapping(val root: Configurable) extends QScript
...
@@ -139,8 +150,29 @@ class MultisampleMapping(val root: Configurable) extends QScript
def
summaryStats
:
Map
[
String
,
Any
]
=
Map
()
def
summaryStats
:
Map
[
String
,
Any
]
=
Map
()
def
executeSamplePreProcess
:
Boolean
=
libraries
.
flatMap
(
_
.
_2
.
bamFile
).
size
>
1
def
bamFile
=
if
(
libraries
.
flatMap
(
_
.
_2
.
bamFile
).
nonEmpty
&&
mergeStrategy
!=
MultisampleMapping
.
MergeStrategy
.
None
)
Some
(
new
File
(
sampleDir
,
s
"$sampleId.bam"
))
else
None
def
preProcessBam
=
bamFile
def
addJobs
:
Unit
=
{
def
addJobs
:
Unit
=
{
addPerLibJobs
()
// This add jobs for each library
addPerLibJobs
()
// This add jobs for each library
mergeStrategy
match
{
case
MultisampleMapping
.
MergeStrategy
.
MergeSam
=>
add
(
MergeSamFiles
(
qscript
,
libraries
.
flatMap
(
_
.
_2
.
bamFile
).
toList
,
bamFile
.
get
))
case
MultisampleMapping
.
MergeStrategy
.
PreProcessMergeSam
=>
add
(
MergeSamFiles
(
qscript
,
libraries
.
flatMap
(
_
.
_2
.
preProcessBam
).
toList
,
bamFile
.
get
))
case
MultisampleMapping
.
MergeStrategy
.
MarkDuplicates
=>
add
(
MarkDuplicates
(
qscript
,
libraries
.
flatMap
(
_
.
_2
.
bamFile
).
toList
,
bamFile
.
get
))
case
MultisampleMapping
.
MergeStrategy
.
PreProcessMarkDuplicates
=>
add
(
MarkDuplicates
(
qscript
,
libraries
.
flatMap
(
_
.
_2
.
preProcessBam
).
toList
,
bamFile
.
get
))
case
_
=>
}
}
}
}
}
}
}
...
@@ -148,7 +180,7 @@ class MultisampleMapping(val root: Configurable) extends QScript
...
@@ -148,7 +180,7 @@ class MultisampleMapping(val root: Configurable) extends QScript
object
MultisampleMapping
extends
PipelineCommand
{
object
MultisampleMapping
extends
PipelineCommand
{
object
MergeStrategy
extends
Enumeration
{
object
MergeStrategy
extends
Enumeration
{
val
None
,
MergeSam
,
MarkDuplicates
=
Value
val
None
,
MergeSam
,
MarkDuplicates
,
PreProcessMergeSam
,
PreProcessMarkDuplicates
=
Value
}
}
def
fileMustBeAbsulute
(
file
:
Option
[
File
])
:
Option
[
File
]
=
{
def
fileMustBeAbsulute
(
file
:
Option
[
File
])
:
Option
[
File
]
=
{
...
...
public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala
View file @
10d0ce96
...
@@ -125,7 +125,7 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript {
...
@@ -125,7 +125,7 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript {
val
bamFile
:
File
=
if
(
libraryBamfiles
.
size
==
1
)
libraryBamfiles
.
head
val
bamFile
:
File
=
if
(
libraryBamfiles
.
size
==
1
)
libraryBamfiles
.
head
else
if
(
libraryBamfiles
.
size
>
1
)
{
else
if
(
libraryBamfiles
.
size
>
1
)
{
val
mergeSamFiles
=
MergeSamFiles
(
qscript
,
libraryBamfiles
,
sampleDir
)
val
mergeSamFiles
=
MergeSamFiles
(
qscript
,
libraryBamfiles
,
new
File
(
sampleDir
,
s
"$sampleId.bam"
)
)
qscript
.
add
(
mergeSamFiles
)
qscript
.
add
(
mergeSamFiles
)
mergeSamFiles
.
output
mergeSamFiles
.
output
}
else
null
}
else
null
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment