Skip to content
GitLab
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
49ba8c53
Commit
49ba8c53
authored
Jan 27, 2015
by
Peter van 't Hof
Browse files
Renames and adds scala docs
parent
c18e88d9
Changes
3
Hide whitespace changes
Inline
Side-by-side
public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
View file @
49ba8c53
...
...
@@ -21,88 +21,134 @@ import nl.lumc.sasc.biopet.core.config.{ Config }
import
nl.lumc.sasc.biopet.utils.ConfigUtils
import
org.broadinstitute.gatk.utils.commandline.
{
Argument
}
/**
* This trait creates a structured way of use multisample pipelines
*/
trait
MultiSampleQScript
extends
BiopetQScript
{
@Argument
(
doc
=
"Only Sample"
,
shortName
=
"sample"
,
required
=
false
)
val
onlySample
:
List
[
String
]
=
Nil
if
(!
Config
.
global
.
map
.
contains
(
"samples"
)
)
logger
.
warn
(
"No Samples found in config"
)
require
(
Config
.
global
.
map
.
contains
(
"samples"
)
,
"No Samples found in config"
)
/**
* Sample class with basic functions build in
* @param sampleId
*/
abstract
class
AbstractSample
(
val
sampleId
:
String
)
{
/** Overrules config of qscript with default sample */
val
config
=
new
ConfigFunctions
(
defaultSample
=
sampleId
)
/**
* Library class with basic functions build in
* @param libraryId
*/
abstract
class
AbstractLibrary
(
val
libraryId
:
String
)
{
/** Overrules config of qscript with default sample and default library */
val
config
=
new
ConfigFunctions
(
defaultSample
=
sampleId
,
defaultLibrary
=
libraryId
)
final
def
run
()
:
Unit
=
{
/** Adds the library jobs */
final
def
add
()
:
Unit
=
{
currentSample
=
Some
(
sampleId
)
currentLib
rary
=
Some
(
libraryId
)
run
Jobs
()
currentLib
rary
=
None
currentLib
=
Some
(
libraryId
)
add
Jobs
()
currentLib
=
None
currentSample
=
None
}
def
getLibraryDir
:
String
=
{
getSampleDir
+
"lib_"
+
libraryId
+
File
.
separator
}
/** Creates a library file with given suffix */
def
createFile
(
suffix
:
String
)
:
File
=
new
File
(
libDir
,
sampleId
+
"-"
+
libraryId
+
suffix
)
/** Returns library directory */
def
libDir
=
sampleDir
+
"lib_"
+
libraryId
+
File
.
separator
protected
def
runJobs
()
/** Function that add library jobs */
protected
def
addJobs
()
}
/** Library type, need implementation in pipeline */
type
Library
<:
AbstractLibrary
val
libraries
:
Map
[
String
,
Library
]
=
getLibrariesIds
.
map
(
id
=>
id
->
makeLibrary
(
id
)).
toMap
/** Stores all libraries */
val
libraries
:
Map
[
String
,
Library
]
=
libIds
.
map
(
id
=>
id
->
makeLibrary
(
id
)).
toMap
/**
* Factory method for Library class
* @param id SampleId
* @return Sample class
*/
def
makeLibrary
(
id
:
String
)
:
Library
protected
def
getLibrariesIds
:
Set
[
String
]
=
{
/** returns a set with library names */
protected
def
libIds
:
Set
[
String
]
=
{
ConfigUtils
.
getMapFromPath
(
Config
.
global
.
map
,
List
(
"samples"
,
sampleId
,
"libraries"
)).
getOrElse
(
Map
()).
keySet
}
final
def
run
()
:
Unit
=
{
/** Adds sample jobs */
final
def
add
()
:
Unit
=
{
currentSample
=
Some
(
sampleId
)
run
Jobs
()
add
Jobs
()
currentSample
=
None
}
protected
def
runJobs
()
/** Function to add library jobs */
protected
def
addJobs
()
/** function runs all libraries in one call */
protected
final
def
runLibraryJobs
()
:
Unit
=
{
for
((
libraryId
,
library
)
<-
libraries
)
{
library
.
run
()
library
.
add
()
}
}
def
getSampleDir
:
String
=
{
outputDir
+
"samples"
+
File
.
pathSeparator
+
sampleId
+
File
.
pathSeparator
}
/**
* Creates a sample file with given suffix
* @param suffix
* @return
*/
def
createFile
(
suffix
:
String
)
=
new
File
(
sampleDir
,
sampleId
+
suffix
)
/** Returns sample directory */
def
sampleDir
=
outputDir
+
"samples"
+
File
.
pathSeparator
+
sampleId
+
File
.
pathSeparator
}
/** Sample type, need implementation in pipeline */
type
Sample
<:
AbstractSample
def
makeSample
(
id
:
String
)
:
Sample
/**
* Factory method for Sample class
* @param id SampleId
* @return Sample class
*/
def
makeSample
(
id
:
String
)
:
Sample
val
samples
:
Map
[
String
,
Sample
]
=
getSamplesIds
.
map
(
id
=>
id
->
makeSample
(
id
)).
toMap
/** Stores all samples */
val
samples
:
Map
[
String
,
Sample
]
=
sampleIds
.
map
(
id
=>
id
->
makeSample
(
id
)).
toMap
/** Returns a list of all sampleIDs */
protected
def
getS
ample
s
Ids
:
Set
[
String
]
=
if
(
onlySample
!=
Nil
)
onlySample
.
toSet
else
{
ConfigUtils
.
any2map
(
Config
.
global
.
map
.
getOrElse
(
"samples"
,
Map
()
)).
keySet
protected
def
s
ampleIds
:
Set
[
String
]
=
if
(
onlySample
!=
Nil
)
onlySample
.
toSet
else
{
ConfigUtils
.
any2map
(
Config
.
global
.
map
(
"samples"
)).
keySet
}
/** Runs runSingleSampleJobs method for each sample */
final
def
runSamplesJobs
()
{
for
((
sampleId
,
sample
)
<-
samples
)
{
sample
.
run
()
sample
.
add
()
}
}
/** Stores sample state */
private
var
currentSample
:
Option
[
String
]
=
None
private
var
currentLibrary
:
Option
[
String
]
=
None
/** Stores library state */
private
var
currentLib
:
Option
[
String
]
=
None
/** Prefix full path with sample and library for jobs that's are created in current state */
override
protected
[
core
]
def
configFullPath
:
List
[
String
]
=
{
val
s
=
currentSample
match
{
case
Some
(
s
)
=>
"samples"
::
s
::
Nil
case
_
=>
Nil
}
val
l
=
currentLib
rary
match
{
val
l
=
currentLib
match
{
case
Some
(
l
)
=>
"libraries"
::
l
::
Nil
case
_
=>
Nil
}
...
...
public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/MultisamplePipelineTemplate.scala
View file @
49ba8c53
...
...
@@ -27,12 +27,12 @@ class MultisamplePipelineTemplate(val root: Configurable) extends QScript with M
def
makeLibrary
(
id
:
String
)
=
new
Library
(
id
)
class
Library
(
libraryId
:
String
)
extends
AbstractLibrary
(
libraryId
)
{
def
run
Jobs
()
:
Unit
=
{
def
add
Jobs
()
:
Unit
=
{
// Library jobs
}
}
def
run
Jobs
()
:
Unit
=
{
def
add
Jobs
()
:
Unit
=
{
// Sample jobs
}
}
...
...
public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala
View file @
49ba8c53
...
...
@@ -64,7 +64,7 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript {
def
makeLibrary
(
id
:
String
)
=
new
Library
(
id
)
class
Library
(
libraryId
:
String
)
extends
AbstractLibrary
(
libraryId
)
{
val
inputFastq
:
File
=
config
(
"R1"
,
required
=
true
)
val
prefixFastq
:
File
=
new
File
(
getLibraryDir
,
sampleId
+
"-"
+
libraryId
+
".prefix.fastq"
)
val
prefixFastq
:
File
=
createFile
(
".prefix.fastq"
)
val
flexiprep
=
new
Flexiprep
(
qscript
)
flexiprep
.
sampleName
=
sampleId
...
...
@@ -74,8 +74,8 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript {
mapping
.
libraryId
=
libraryId
mapping
.
sampleId
=
sampleId
def
run
Jobs
()
:
Unit
=
{
flexiprep
.
outputDir
=
getLibrary
Dir
+
"flexiprep/"
def
add
Jobs
()
:
Unit
=
{
flexiprep
.
outputDir
=
lib
Dir
+
"flexiprep/"
flexiprep
.
input_R1
=
inputFastq
flexiprep
.
init
flexiprep
.
biopetScript
...
...
@@ -90,38 +90,38 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript {
add
(
pf
)
mapping
.
input_R1
=
pf
.
outputFastq
mapping
.
outputDir
=
getLibrary
Dir
mapping
.
outputDir
=
lib
Dir
mapping
.
init
mapping
.
biopetScript
addAll
(
mapping
.
functions
)
if
(
config
(
"library_counts"
,
default
=
false
).
asBoolean
)
{
addBedtoolsCounts
(
mapping
.
outputFiles
(
"
finalBamFile
"
)
,
sampleId
+
"-"
+
libraryId
,
getLibrary
Dir
)
addTablibCounts
(
pf
.
outputFastq
,
sampleId
+
"-"
+
libraryId
,
getLibrary
Dir
)
addBedtoolsCounts
(
mapping
.
finalBamFile
,
sampleId
+
"-"
+
libraryId
,
lib
Dir
)
addTablibCounts
(
pf
.
outputFastq
,
sampleId
+
"-"
+
libraryId
,
lib
Dir
)
}
}
}
def
run
Jobs
()
:
Unit
=
{
def
add
Jobs
()
:
Unit
=
{
runLibraryJobs
()
val
libraryBamfiles
=
libraries
.
map
(
_
.
_2
.
mapping
.
outputFiles
(
"
finalBamFile
"
)
).
toList
val
libraryBamfiles
=
libraries
.
map
(
_
.
_2
.
mapping
.
finalBamFile
).
toList
val
libraryFastqFiles
=
libraries
.
map
(
_
.
_2
.
prefixFastq
).
toList
val
bamFile
:
File
=
if
(
libraryBamfiles
.
size
==
1
)
libraryBamfiles
.
head
else
if
(
libraryBamfiles
.
size
>
1
)
{
val
mergeSamFiles
=
MergeSamFiles
(
qscript
,
libraryBamfiles
,
getS
ampleDir
)
val
mergeSamFiles
=
MergeSamFiles
(
qscript
,
libraryBamfiles
,
s
ampleDir
)
add
(
mergeSamFiles
)
mergeSamFiles
.
output
}
else
null
val
fastqFile
:
File
=
if
(
libraryFastqFiles
.
size
==
1
)
libraryFastqFiles
.
head
else
if
(
libraryFastqFiles
.
size
>
1
)
{
val
cat
=
Cat
(
qscript
,
libraryFastqFiles
,
getS
ampleDir
+
sampleId
+
".fastq"
)
val
cat
=
Cat
(
qscript
,
libraryFastqFiles
,
s
ampleDir
+
sampleId
+
".fastq"
)
add
(
cat
)
cat
.
output
}
else
null
addBedtoolsCounts
(
bamFile
,
sampleId
,
getS
ampleDir
)
addTablibCounts
(
fastqFile
,
sampleId
,
getS
ampleDir
)
addBedtoolsCounts
(
bamFile
,
sampleId
,
s
ampleDir
)
addTablibCounts
(
fastqFile
,
sampleId
,
s
ampleDir
)
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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