Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Maintenance - Mise à jour mensuelle Lundi 6 Février entre 7h00 et 9h00
Open sidebar
genotoul-bioinfo
jflow
Commits
ea23afbe
Commit
ea23afbe
authored
Aug 10, 2014
by
Jerome Mariette
Browse files
first step to make Parameter looks good
parent
8110b41f
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
bin/jflow_server.py
View file @
ea23afbe
...
...
@@ -154,7 +154,7 @@ class JFlowServer (object):
wf_instances
=
self
.
wfmanager
.
get_available_workflows
()
for
instance
in
wf_instances
:
parameters
,
parameters_per_groups
,
groups
=
[],
{},
[
"default"
]
for
param
in
instance
.
parameters
:
for
param
in
instance
.
get_
parameters
()
:
# if it's a multiple action change the action by the name
if
param
.
action
==
jflow
.
parameter
.
MiltipleAction
:
action
=
"MiltipleAction"
...
...
src/jflow/parameter.py
View file @
ea23afbe
...
...
@@ -168,29 +168,29 @@ class MiltipleAppendAction(argparse.Action):
final_values
.
append
((
param
,
final_hash
[
param
]))
items
.
append
(
final_values
)
setattr
(
namespace
,
self
.
dest
,
items
)
class
Parameter
(
object
):
"""
"""
class
AbstractParameter
(
object
):
def
__init__
(
self
,
name
,
help
,
flag
,
default
=
None
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
Fals
e
,
action
=
"store"
,
sub_parameters
=
[]
,
group
=
"default"
,
display_name
=
None
):
def
__init__
(
self
,
name
,
help
,
default
=
None
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
Non
e
,
action
=
"store"
,
sub_parameters
=
None
,
group
=
"default"
,
display_name
=
None
):
self
.
name
=
name
self
.
flag
=
flag
self
.
help
=
help
self
.
action
=
action
self
.
nargs
=
None
self
.
sub_parameters
=
sub_parameters
if
sub_parameters
:
self
.
sub_parameters
=
sub_parameters
else
:
self
.
sub_parameters
=
[]
self
.
group
=
group
if
display_name
==
None
:
self
.
display_name
=
name
if
flag
==
None
:
self
.
flag
=
"--"
+
name
.
replace
(
"_"
,
"-"
)
else
:
self
.
flag
=
flag
if
display_name
==
None
:
self
.
display_name
=
name
.
replace
(
"_"
,
" "
).
title
()
else
:
self
.
display_name
=
display_name
self
.
required
=
str
(
required
).
lower
()
in
(
"yes"
,
"y"
,
"true"
,
"t"
,
"1"
)
self
.
choices
=
choices
if
self
.
choices
:
self
.
choices
=
choices
.
split
(
"|"
)
if
len
(
self
.
sub_parameters
)
>
0
:
self
.
nargs
=
"+"
...
...
@@ -239,7 +239,7 @@ class Parameter(object):
self
.
default
=
{}
for
param
in
self
.
sub_parameters
:
self
.
default
[
param
.
name
]
=
param
.
default
def
export_to_argparse
(
self
):
if
self
.
type
==
types
.
BooleanType
and
str
(
self
.
default
).
lower
()
in
(
"false"
,
"f"
,
"0"
):
return
{
"help"
:
self
.
help
,
"required"
:
self
.
required
,
"dest"
:
self
.
name
,
...
...
@@ -259,6 +259,98 @@ class Parameter(object):
def
get_type
(
self
):
return
self
.
type
.
__name__
def
__str__
(
self
):
return
self
.
name
+
": "
+
str
(
self
.
flag
)
+
" | "
+
self
.
help
+
" (default="
+
\
str
(
self
.
default
)
+
", required="
+
str
(
self
.
required
)
+
", flag="
+
self
.
flag
+
")"
class
AbstractFile
(
object
):
def
__init__
(
self
,
file_format
=
"any"
):
self
.
file_format
=
file_format
self
.
parent_component_nameid
=
None
class
MultiParameter
(
dict
,
AbstractParameter
):
def
__init__
(
self
,
name
,
help
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractParameter
.
__init__
(
self
,
name
,
help
,
required
=
required
,
flag
=
flag
,
group
=
group
,
display_name
=
display_name
)
return
dict
.
__init__
(
self
,
{})
class
MultiParameterList
(
list
,
AbstractParameter
):
def
__init__
(
self
,
name
,
help
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractParameter
.
__init__
(
self
,
name
,
help
,
required
=
required
,
flag
=
flag
,
group
=
group
,
display_name
=
display_name
)
return
list
.
__init__
(
self
,
[])
class
Parameter
(
str
,
AbstractParameter
):
def
__new__
(
self
,
name
,
help
,
default
=
""
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
sub_parameters
=
None
,
group
=
"default"
,
display_name
=
None
):
return
str
.
__new__
(
self
,
default
)
def
__init__
(
self
,
name
,
help
,
default
=
""
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
sub_parameters
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractParameter
.
__init__
(
self
,
name
,
help
,
flag
=
flag
,
type
=
type
,
choices
=
choices
,
required
=
required
,
action
=
"store"
,
sub_parameters
=
sub_parameters
,
group
=
group
,
display_name
=
display_name
)
class
InputFile
(
Parameter
,
AbstractFile
):
def
__new__
(
self
,
name
,
help
,
file_format
=
"any"
,
default
=
""
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
return
str
.
__new__
(
self
,
default
)
def
__init__
(
self
,
name
,
help
,
file_format
=
"any"
,
default
=
""
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractFile
.
__init__
(
self
,
file_format
)
Parameter
.
__init__
(
self
,
name
,
help
,
flag
=
flag
,
type
=
type
,
choices
=
choices
,
required
=
required
,
group
=
group
,
display_name
=
display_name
)
class
OutputFile
(
Parameter
,
AbstractFile
):
def
__new__
(
self
,
name
,
help
,
file_format
=
"any"
,
default
=
""
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
return
str
.
__new__
(
self
,
default
)
def
__init__
(
self
,
name
,
help
,
file_format
=
"any"
,
default
=
""
,
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractFile
.
__init__
(
self
,
file_format
)
Parameter
.
__init__
(
self
,
name
,
help
,
flag
=
flag
,
type
=
type
,
choices
=
choices
,
required
=
required
,
group
=
group
,
display_name
=
display_name
)
class
ParameterList
(
list
,
AbstractParameter
):
def
__init__
(
self
,
name
,
help
,
default
=
[],
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
sub_parameters
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractParameter
.
__init__
(
self
,
name
,
help
,
flag
=
flag
,
type
=
type
,
choices
=
choices
,
required
=
required
,
action
=
"append"
,
sub_parameters
=
sub_parameters
,
group
=
group
,
display_name
=
display_name
)
if
default
.
__class__
.
__name__
==
"str"
:
return
list
.
__init__
(
self
,
[
default
])
elif
default
.
__class__
.
__name__
==
"list"
:
return
list
.
__init__
(
self
,
default
)
class
InputFileList
(
ParameterList
,
AbstractFile
):
def
__init__
(
self
,
name
,
help
,
file_format
=
"any"
,
default
=
[],
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractFile
.
__init__
(
self
,
file_format
)
ParameterList
.
__init__
(
self
,
name
,
help
,
flag
=
flag
,
type
=
type
,
choices
=
choices
,
required
=
required
,
group
=
group
,
display_name
=
display_name
)
if
default
.
__class__
.
__name__
==
"str"
:
return
list
.
__init__
(
self
,
[
default
])
elif
default
.
__class__
.
__name__
==
"list"
:
return
list
.
__init__
(
self
,
default
)
class
OutputFileList
(
ParameterList
,
AbstractFile
):
def
__init__
(
self
,
name
,
help
,
file_format
=
"any"
,
default
=
[],
type
=
types
.
StringType
,
choices
=
None
,
required
=
False
,
flag
=
None
,
group
=
"default"
,
display_name
=
None
):
AbstractFile
.
__init__
(
self
,
file_format
)
ParameterList
.
__init__
(
self
,
name
,
help
,
flag
=
flag
,
type
=
type
,
choices
=
choices
,
required
=
required
,
group
=
group
,
display_name
=
display_name
)
if
default
.
__class__
.
__name__
==
"str"
:
return
list
.
__init__
(
self
,
[
default
])
elif
default
.
__class__
.
__name__
==
"list"
:
return
list
.
__init__
(
self
,
default
)
src/jflow/workflow.py
View file @
ea23afbe
This diff is collapsed.
Click to expand it.
workflows/alignment/__init__.py
View file @
ea23afbe
...
...
@@ -16,15 +16,37 @@
#
from
jflow.workflow
import
Workflow
from
jflow.parameter
import
InputFileList
,
InputFile
class
Alignment
(
Workflow
):
def
get_name
(
self
):
return
"alignment"
def
get_description
(
self
):
return
"align reads against a reference genome"
def
define_parameters
(
self
,
parameters_section
=
None
):
self
.
add_input_file
(
"read_1"
,
"Which read1 files should be used"
,
required
=
True
,
type
=
"localfile"
,
is_list
=
True
)
self
.
add_input_file
(
"read_2"
,
"Which read2 files should be used (if single end, leave empty)"
,
type
=
"localfile"
,
is_list
=
True
)
self
.
add_input_file
(
"reference_genome"
,
"Which genome should the read being align on"
,
required
=
True
,
type
=
"localfile"
)
self
.
add_multiple_parameter
(
"test"
,
"toto est dnas le gazon"
)
self
.
add_input_file
(
"toto"
,
"Whices should be used"
,
required
=
True
,
is_list
=
True
,
add_to
=
"test"
)
self
.
add_input_file
(
"tot"
,
"Whould be used"
,
is_list
=
True
,
add_to
=
"test"
)
# prochaine etape:
# - tester les types multiples
# - Ajouter les types InputFile, InputFileList, OutputFile, OutputFileList
# - trouver une methode pour ordonner les parameters (self.add_parameter ...)
def
process
(
self
):
"""
Run the workflow
"""
print
">>>>>>>>>>>>>>>>>>>> "
,
self
.
reference_genome
print
">>>>>>>>>>>>>>>>>>>> "
,
self
.
read_1
print
">>>>>>>>>>>>>>>>>>>> "
,
self
.
read_2
# index the reference genome
bwaindex
=
self
.
add_component
(
"BWAIndex"
,
[
self
.
args
[
"reference_genome"
]])
#
bwaindex = self.add_component("BWAIndex", [self.args["reference_genome"]])
# align reads against indexed genome
bwa
=
self
.
add_component
(
"BWA"
,
[
bwaindex
.
databank
,
self
.
args
[
"read_1"
],
self
.
args
[
"read_2"
]])
\ No newline at end of file
#bwa = self.add_component("BWA", [bwaindex.databank, self.args["read_1"], self.args["read_2"]])
\ No newline at end of file
workflows/alignment/workflow.properties
deleted
100644 → 0
View file @
8110b41f
#
# Copyright (C) 2012 INRA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
[global]
name
=
alignment
description
=
align reads against a reference genome
#
# Parameter section
# param.name: the parameter display name
# .flag: the command line flag to use the argument
# .help: a brief description of what the parameter does
# .default [None]: the value produced if the parameter is not provided
# .type [str]: the parameter type that should be tested, this can be:
# str|int|date|inputfile|urlfile|localfile|browsefile|bool|... all types
# defined in the types.py package)
# .choices [None]: a container of the allowable values for the parameter
# .required [False]: whether or not the command-line option may be omitted
# .action [store]: the basic type of action to be taken (store|append)
# .group [None]: gathers arguments into groups when displaying help messages / forms
# .exclude [None]: will make sure that there is only one arguments provided
#
[parameters]
read_1.name
=
Read 1
read_1.flag
=
--read-1
read_1.help
=
Which read1 files should be used
read_1.required
=
True
read_1.type
=
localfile
read_1.action
=
append
read_2.name
=
Read 2
read_2.flag
=
--read-2
read_2.help
=
Which read2 files should be used (if single end, leave empty)
read_2.type
=
localfile
read_2.action
=
append
reference_genome.name
=
Reference genome
reference_genome.flag
=
--reference-genome
reference_genome.help
=
Which genome should the read being align on
reference_genome.type
=
localfile
reference_genome.required
=
True
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