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
vidjil
vidjil
Commits
bcd6101b
Commit
bcd6101b
authored
Sep 23, 2014
by
Marc Duez
Browse files
Merge branch 'master' of
git+ssh://scm.gforge.inria.fr//gitroot/vidjil/vidjil
parents
19baeeab
22d116a7
Changes
35
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
bcd6101b
...
...
@@ -38,8 +38,8 @@ RELEASE_TAG="notag"
RELEASE_H
=
$(VIDJIL_ALGO_SRC)
/release.h
RELEASE_SOURCE
=
$(
wildcard
$(VIDJIL_ALGO_SRC)
/
*
.cpp
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/
*
.h
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/core/
*
.cpp
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/
*
.cpp
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/core/
*
.h
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/
*
.h
)
RELEASE_MAKE
=
./Makefile
$(VIDJIL_ALGO_SRC)
/Makefile
$(VIDJIL_ALGO_SRC)
/core/Makefile
$(VIDJIL_ALGO_SRC)
/tests/Makefile germline/Makefile data/Makefile
RELEASE_TESTS
=
data/get-sequences
$(
wildcard
data/
*
.fa
)
$(
wildcard
data/
*
.fq
)
$(VIDJIL_ALGO_SRC)
/tests/should-to-tap.sh
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/
*
.should_get
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/bugs/
*
.fa
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/bugs/
*
.should_get
)
RELEASE_FILES
=
$(RELEASE_SOURCE)
$(RELEASE_TESTS)
$(RELEASE_MAKE)
germline/get-germline germline/split-from-imgt.py doc/
README
doc/LICENSE data/segmentation.fasta
RELEASE_TESTS
=
data/get-sequences
$(
wildcard
data/
*
.fa
)
$(
wildcard
data/
*
.fq
)
$(VIDJIL_ALGO_SRC)
/tests/should-to-tap.sh
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/
*
.should_get
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/bugs/
*
.fa
)
$(
wildcard
$(VIDJIL_ALGO_SRC)
/tests/bugs/
*
.should_get
)
$(VIDJIL_ALGO_SRC)
/tests/format-json.sh
RELEASE_FILES
=
$(RELEASE_SOURCE)
$(RELEASE_TESTS)
$(RELEASE_MAKE)
germline/get-germline germline/split-from-imgt.py doc/
algo.org
doc/LICENSE data/segmentation.fasta
RELEASE_ARCHIVE
=
vidjil-
$(RELEASE_TAG)
.tgz
CURRENT_DIR
=
vidjil
...
...
algo/tests/stanford-fuse.should_get
View file @
bcd6101b
!LAUNCH: ../../vidjil -G ../../germline/IGH -d ../../data/Stanford_S22.fasta ; python ../../server/fuse.py out/vidjil.data out/vidjil.data -o out/fused.data ; cat out/fused.data | sh format-json.sh
$ Points list
1:"point": [ "", "" ]
f
1:"point": [ "", "" ]
$ Most abundant window, twice, fused
1:"window": "CCACCTATTACTGTACCCGGGAGGAACAATATAGCAGCTGGTACTTTGACTTCTGGGGCC", "id": .*, "size": [ 8, 8 ]
f
1:"window": "CCACCTATTACTGTACCCGGGAGGAACAATATAGCAGCTGGTACTTTGACTTCTGGGGCC", "id": .*, "size": [ 8, 8 ]
# Fails since 49046ca6b97, no more 'others'
$ Windows that are not in the top 50
...
...
browser/css/dark.css
View file @
bcd6101b
...
...
@@ -935,10 +935,10 @@ span.logo {
border-collapse
:
collapse
;
}
.db_table
.column1
{
width
:
25%
;
width
:
100px
;
}
.db_table
.column2
{
width
:
1
0
0px
;
width
:
1
5
0px
;
}
.db_table
.column4
{
width
:
50px
;
...
...
browser/css/light.css
View file @
bcd6101b
...
...
@@ -935,10 +935,10 @@ span.logo {
border-collapse
:
collapse
;
}
.db_table
.column1
{
width
:
25%
;
width
:
100px
;
}
.db_table
.column2
{
width
:
1
0
0px
;
width
:
1
5
0px
;
}
.db_table
.column4
{
width
:
50px
;
...
...
browser/css/vidjil.less
View file @
bcd6101b
...
...
@@ -1078,11 +1078,11 @@ span.logo
}
.db_table .column1{
width:
25%
;
width:
100px
;
}
.db_table .column2{
width: 1
0
0px;
width: 1
5
0px;
}
.db_table .column4{
...
...
doc/CHANGELOG
View file @
bcd6101b
This changelog concerns the algorithmic part (C++) of Vidjil.
2014-09-xx The Vidjil Team
* Export cause of non-segmentation in the .data
* New option to output segmented reads (-U), now by default segmented reads are not output one by one
* Updated .data .json output (the format will change again in a next release)
* Updated tests
2014-07-28 The Vidjil Team
* Better heuristic, segment more reads (core/affectanalyser.h, core/segment.cpp)
This improved heuristic was designed to implement a multi-germline analysis in a next release.
...
...
doc/algo.org
View file @
bcd6101b
...
...
@@ -233,6 +233,7 @@ applicable being removed:
A summary of extracted windows is also available in a JSON format,
including, for each windows, the number of reads sharing this window.
The format of this file may change in future releases.
This file is used by the dynamic browser for visualization
and analysis of clones and their tracking along different samples,
...
...
doc/browser.org
View file @
bcd6101b
...
...
@@ -27,7 +27,8 @@ obtained:
http://www.vidjil.org/submit.html or using any other method
(e.g. your own FTP)
- from the command-line version of Vidjil (starting from
.fasta/.fastq files, see doc/README in the command-line version)
.fasta/.fastq files, see doc/alog.org in the command-line version).
To gather several .data files, you have to use the [[../server/fuse.py][fuse.py]] script
- in a next release (start of 2015), you will be able to upload,
manage and process your runs (.fasta/.fastq files) directly on the browser (with
authentication to ensure that you keep the control on your data).
...
...
@@ -37,7 +38,7 @@ obtained:
* First aid
- Go to the “file” menu to access your data.
- Go to the “file”
/“import/export”
menu to access your data.
Your files are protected with your login and password.
There is always a “sample/L2-LIL.data” dataset for demonstration purposes.
...
...
server/backup.sh
View file @
bcd6101b
...
...
@@ -20,13 +20,13 @@ if [ $# -ge 1 ]; then
DIR
=
"
$1
/"
fi
now
=
$(
date
+
"%Y
_
%m
_%d
"
)
now
=
$(
date
+
"%Y
-
%m
-%d_%H:%M:%S
"
)
if
[
$COMPLETE
-eq
1
]
;
then
filename
=
"
${
DIR
}
backup_"
$now
zip
-r
$filename
web2py/applications/vidjil/uploads/ web2py/applications/vidjil/databases/
else
filename
=
"
${
DIR
}
backup_essentials_"
$now
zip
-r
$filename
web2py/applications/vidjil/databases/ web2py/applications/vidjil/uploads/
data
_file
*
web2py/applications/vidjil/uploads/fused_file
*
zip
-r
$filename
web2py/applications/vidjil/databases/ web2py/applications/vidjil/uploads/
results
_file
*
web2py/applications/vidjil/uploads/fused_file
*
fi
echo
$filename
server/fuse.py
View file @
bcd6101b
...
...
@@ -741,14 +741,14 @@ def main():
parser
=
argparse
.
ArgumentParser
(
description
=
DESCRIPTION
,
epilog
=
'''Example:
python2 %(prog)s --germline IGH ../out
/vidjil.data'''
,
python2 %(prog)s --germline IGH out/Diag/vidjil.data out/MRD-1/vidjil.data out/MRD-2
/vidjil.data'''
,
formatter_class
=
argparse
.
RawTextHelpFormatter
)
group_options
=
parser
.
add_argument_group
()
# title='Options and parameters')
group_options
.
add_argument
(
'--test'
,
action
=
'store_true'
,
help
=
'run self-tests'
)
group_options
.
add_argument
(
'--multi'
,
action
=
'store_true'
,
help
=
'merge multiple system'
)
group_options
.
add_argument
(
'--multi'
,
action
=
'store_true'
,
help
=
'merge multiple system
s (experimental)
'
)
group_options
.
add_argument
(
'--compress'
,
'-c'
,
action
=
'store_true'
,
help
=
'compress point names, removing common substrings'
)
group_options
.
add_argument
(
'--pipeline'
,
'-p'
,
action
=
'store_true'
,
help
=
'compress point names (internal Bonsai pipeline)'
)
...
...
server/web2py/applications/vidjil/controllers/admin.py
View file @
bcd6101b
...
...
@@ -10,22 +10,3 @@ if request.env.http_origin:
def
index
():
if
auth
.
has_membership
(
"admin"
):
return
dict
(
message
=
T
(
''
))
def
result
():
if
auth
.
has_membership
(
"admin"
):
return
dict
(
message
=
T
(
''
))
def
run_all
():
if
auth
.
has_membership
(
"admin"
):
query
=
db
(
(
db
.
data_file
.
sequence_file_id
==
db
.
sequence_file
.
id
)
&
(
db
.
data_file
.
config_id
==
db
.
config
.
id
)
).
select
()
for
row
in
query
:
schedule_run
(
row
.
sequence_file
.
id
,
row
.
config
.
id
)
res
=
{
"success"
:
"true"
,
"message"
:
"rerun all"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
server/web2py/applications/vidjil/controllers/config.py
View file @
bcd6101b
...
...
@@ -87,8 +87,8 @@ def confirm():
def
delete
():
import
shutil
,
os
.
path
#delete
data
_file using this config
db
(
db
.
data
_file
.
config_id
==
request
.
vars
[
"id"
]).
delete
()
#delete
results
_file using this config
db
(
db
.
results
_file
.
config_id
==
request
.
vars
[
"id"
]).
delete
()
#delete config
db
(
db
.
config
.
id
==
request
.
vars
[
"id"
]).
delete
()
...
...
server/web2py/applications/vidjil/controllers/default.py
View file @
bcd6101b
...
...
@@ -9,7 +9,7 @@
## - call exposes all registered services (none by default)
#########################################################################
import
gluon.contrib.simplejson
import
gluon.contrib.simplejson
,
time
,
datetime
if
request
.
env
.
http_origin
:
response
.
headers
[
'Access-Control-Allow-Origin'
]
=
request
.
env
.
http_origin
response
.
headers
[
'Access-Control-Allow-Credentials'
]
=
'true'
...
...
@@ -45,7 +45,7 @@ def run_request():
error
+=
"id sequence file needed, "
if
not
"config_id"
in
request
.
vars
:
error
+=
"id config needed, "
if
not
auth
.
has_permission
(
"run"
,
"
data
_file"
)
:
if
not
auth
.
has_permission
(
"run"
,
"
results
_file"
)
:
error
+=
"permission needed"
id_patient
=
db
.
sequence_file
[
request
.
vars
[
"sequence_file_id"
]].
patient_id
...
...
@@ -96,9 +96,9 @@ def get_data():
## récupération des infos stockées sur la base de données
query
=
db
(
(
db
.
patient
.
id
==
db
.
sequence_file
.
patient_id
)
&
(
db
.
data
_file
.
sequence_file_id
==
db
.
sequence_file
.
id
)
&
(
db
.
results
_file
.
sequence_file_id
==
db
.
sequence_file
.
id
)
&
(
db
.
patient
.
id
==
request
.
vars
[
"patient_id"
]
)
&
(
db
.
data
_file
.
config_id
==
request
.
vars
[
"config_id"
]
)
&
(
db
.
results
_file
.
config_id
==
request
.
vars
[
"config_id"
]
)
).
select
(
orderby
=
db
.
sequence_file
.
sampling_date
)
data
[
"samples"
][
"original_names"
]
=
[]
...
...
@@ -145,20 +145,6 @@ def get_analysis():
if
error
==
""
:
"""
## récupération des infos stockées sur la base de données
query = db( ( db.patient.id == db.sequence_file.patient_id )
& ( db.data_file.sequence_file_id == db.sequence_file.id )
& ( db.patient.id == request.vars["patient_id"] )
& ( db.data_file.config_id == request.vars["config_id"] )
).select( orderby=db.sequence_file.sampling_date )
order = 0
for row in query :
(filename, str) = db.sequence_file.data_file.retrieve(row.sequence_file.data_file)
res["samples"]["original_names"].append(filename)
res["samples"]["info_sequence_file"].append(row.sequence_file.info)
"""
res
[
"info_patient"
]
=
db
.
patient
[
request
.
vars
[
"patient_id"
]].
info
res
[
"patient"
]
=
db
.
patient
[
request
.
vars
[
"patient_id"
]].
first_name
+
" "
+
db
.
patient
[
request
.
vars
[
"patient_id"
]].
last_name
+
" ("
+
db
.
config
[
request
.
vars
[
"config_id"
]].
name
+
")"
...
...
@@ -205,14 +191,19 @@ def save_analysis():
f
=
request
.
vars
[
'fileToUpload'
]
ts
=
time
.
time
()
if
not
analysis_query
.
isempty
()
:
analysis_id
=
analysis_query
.
select
().
first
().
id
db
.
analysis_file
[
analysis_id
]
=
dict
(
analysis_file
=
db
.
analysis_file
.
analysis_file
.
store
(
f
.
file
,
f
.
filename
))
else
:
db
.
analysis_file
[
analysis_id
]
=
dict
(
analysis_file
=
db
.
analysis_file
.
analysis_file
.
store
(
f
.
file
,
f
.
filename
),
analyze_date
=
datetime
.
datetime
.
fromtimestamp
(
ts
).
strftime
(
'%Y-%m-%d %H:%M:%S'
)
)
else
:
analysis_id
=
db
.
analysis_file
.
insert
(
analysis_file
=
db
.
analysis_file
.
analysis_file
.
store
(
f
.
file
,
f
.
filename
),
config_id
=
request
.
vars
[
'config_id'
],
patient_id
=
request
.
vars
[
'patient_id'
],
)
config_id
=
request
.
vars
[
'config_id'
],
patient_id
=
request
.
vars
[
'patient_id'
],
analyze_date
=
datetime
.
datetime
.
fromtimestamp
(
ts
).
strftime
(
'%Y-%m-%d %H:%M:%S'
)
)
patient_name
=
db
.
patient
[
request
.
vars
[
'patient_id'
]].
first_name
+
" "
+
db
.
patient
[
request
.
vars
[
'patient_id'
]].
last_name
...
...
server/web2py/applications/vidjil/controllers/file.py
View file @
bcd6101b
...
...
@@ -135,7 +135,7 @@ def delete():
if
auth
.
has_permission
(
'admin'
,
'patient'
,
patient_id
):
db
(
db
.
sequence_file
.
id
==
request
.
vars
[
"id"
]).
delete
()
db
(
db
.
data
_file
.
sequence_file_id
==
request
.
vars
[
"id"
]).
delete
()
db
(
db
.
results
_file
.
sequence_file_id
==
request
.
vars
[
"id"
]).
delete
()
res
=
{
"redirect"
:
"patient/info"
,
"args"
:
{
"id"
:
patient_id
},
...
...
server/web2py/applications/vidjil/controllers/patient.py
View file @
bcd6101b
...
...
@@ -21,7 +21,6 @@ def index():
if
not
auth
.
user
:
res
=
{
"redirect"
:
"default/user/login"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
return
dict
(
message
=
T
(
''
))
...
...
@@ -57,7 +56,8 @@ def add_form():
id
=
db
.
patient
.
insert
(
first_name
=
request
.
vars
[
"first_name"
],
last_name
=
request
.
vars
[
"last_name"
],
birth
=
request
.
vars
[
"birth"
],
info
=
request
.
vars
[
"info"
])
info
=
request
.
vars
[
"info"
],
id_label
=
request
.
vars
[
"id_label"
])
user_group
=
auth
.
user_group
(
auth
.
user
.
id
)
...
...
@@ -123,10 +123,11 @@ def edit_form():
db
.
patient
[
request
.
vars
[
"id"
]]
=
dict
(
first_name
=
request
.
vars
[
"first_name"
],
last_name
=
request
.
vars
[
"last_name"
],
birth
=
request
.
vars
[
"birth"
],
info
=
request
.
vars
[
"info"
]
info
=
request
.
vars
[
"info"
],
id_label
=
request
.
vars
[
"id_label"
]
)
res
=
{
"redirect"
:
"
patient/index
"
,
res
=
{
"redirect"
:
"
back
"
,
"message"
:
"change saved"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
...
...
@@ -158,7 +159,7 @@ def delete():
#delete data file
query
=
db
(
(
db
.
sequence_file
.
patient_id
==
request
.
vars
[
"id"
])).
select
()
for
row
in
query
:
db
(
db
.
data
_file
.
sequence_file_id
==
row
.
id
).
delete
()
db
(
db
.
results
_file
.
sequence_file_id
==
row
.
id
).
delete
()
#delete sequence file
db
(
db
.
sequence_file
.
patient_id
==
request
.
vars
[
"id"
]).
delete
()
...
...
@@ -174,42 +175,6 @@ def delete():
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
## display run page result
## need ["data_file_id"]
def
result_info
():
if
(
auth
.
has_permission
(
'admin'
,
'patient'
,
db
.
sequence_file
[
db
.
data_file
[
request
.
vars
[
"data_file_id"
]].
sequence_file_id
].
patient_id
)
):
return
dict
(
message
=
T
(
'result info'
))
else
:
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
def
result_confirm
():
if
(
auth
.
has_permission
(
'admin'
,
'patient'
,
db
.
sequence_file
[
db
.
data_file
[
request
.
vars
[
"data_file_id"
]].
sequence_file_id
].
patient_id
)
&
auth
.
has_permission
(
"run"
,
"data_file"
)
):
return
dict
(
message
=
T
(
'result confirm'
))
else
:
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
#
def
result_delete
():
if
(
auth
.
has_permission
(
'admin'
,
'patient'
,
db
.
sequence_file
[
db
.
data_file
[
request
.
vars
[
"data_file_id"
]].
sequence_file_id
].
patient_id
)
&
auth
.
has_permission
(
"run"
,
"data_file"
)
):
config_id
=
db
.
data_file
[
request
.
vars
[
"data_file_id"
]].
config_id
patient_id
=
db
.
sequence_file
[
db
.
data_file
[
request
.
vars
[
"data_file_id"
]].
sequence_file_id
].
patient_id
db
(
db
.
data_file
.
id
==
request
.
vars
[
"data_file_id"
]).
delete
()
res
=
{
"redirect"
:
"patient/info"
,
"args"
:
{
"id"
:
patient_id
,
"config_id"
:
config_id
},
"success"
:
"true"
,
"message"
:
"run ("
+
str
(
request
.
vars
[
"id"
])
+
") deleted"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
else
:
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
#
def
permission
():
...
...
server/web2py/applications/vidjil/controllers/results_file.py
0 → 100644
View file @
bcd6101b
# coding: utf8
import
gluon.contrib.simplejson
if
request
.
env
.
http_origin
:
response
.
headers
[
'Access-Control-Allow-Origin'
]
=
request
.
env
.
http_origin
response
.
headers
[
'Access-Control-Allow-Credentials'
]
=
'true'
response
.
headers
[
'Access-Control-Max-Age'
]
=
86400
## return admin_panel
def
index
():
if
auth
.
has_membership
(
"admin"
):
return
dict
(
message
=
T
(
''
))
def
run_all
():
if
auth
.
has_membership
(
"admin"
):
query
=
db
(
(
db
.
results_file_file
.
sequence_file_id
==
db
.
sequence_file
.
id
)
&
(
db
.
results_file
.
config_id
==
db
.
config
.
id
)
).
select
()
for
row
in
query
:
schedule_run
(
row
.
sequence_file
.
id
,
row
.
config
.
id
)
res
=
{
"success"
:
"true"
,
"message"
:
"rerun all"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
## display run page result
## need ["results_file_id"]
def
info
():
if
(
auth
.
has_permission
(
'admin'
,
'patient'
,
db
.
sequence_file
[
db
.
results_file
[
request
.
vars
[
"results_file_id"
]].
sequence_file_id
].
patient_id
)
):
return
dict
(
message
=
T
(
'result info'
))
else
:
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
def
confirm
():
if
(
auth
.
has_permission
(
'admin'
,
'patient'
,
db
.
sequence_file
[
db
.
results_file
[
request
.
vars
[
"results_file_id"
]].
sequence_file_id
].
patient_id
)
&
auth
.
has_permission
(
"run"
,
"results_file"
)
):
return
dict
(
message
=
T
(
'result confirm'
))
else
:
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
#
def
delete
():
if
(
auth
.
has_permission
(
'admin'
,
'patient'
,
db
.
sequence_file
[
db
.
results_file
[
request
.
vars
[
"results_file_id"
]].
sequence_file_id
].
patient_id
)
&
auth
.
has_permission
(
"run"
,
"results_file"
)
):
config_id
=
db
.
results_file
[
request
.
vars
[
"results_file_id"
]].
config_id
patient_id
=
db
.
sequence_file
[
db
.
results_file
[
request
.
vars
[
"results_file_id"
]].
sequence_file_id
].
patient_id
#delete results_file
db
(
db
.
results_file
.
id
==
request
.
vars
[
"results_file_id"
]).
delete
()
#delete fused_file
count
=
db
((
db
.
patient
.
id
==
patient_id
)
&
(
db
.
sequence_file
.
patient_id
==
db
.
patient
.
id
)
&
(
db
.
sequence_file
.
id
==
db
.
results_file
.
sequence_file_id
)
&
(
db
.
results_file
.
config_id
==
config_id
)
).
count
()
if
count
==
0
:
db
((
db
.
fused_file
.
patient_id
==
patient_id
)
&
(
db
.
fused_file
.
config_id
==
config_id
)
).
delete
()
res
=
{
"redirect"
:
"patient/info"
,
"args"
:
{
"id"
:
patient_id
,
"config_id"
:
config_id
},
"success"
:
"true"
,
"message"
:
"run ("
+
str
(
request
.
vars
[
"results_file_id"
])
+
") deleted"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
else
:
res
=
{
"message"
:
"acces denied"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
server/web2py/applications/vidjil/controllers/standard.py
deleted
100644 → 0
View file @
19baeeab
# coding: utf8
import
gluon.contrib.simplejson
if
request
.
env
.
http_origin
:
response
.
headers
[
'Access-Control-Allow-Origin'
]
=
request
.
env
.
http_origin
response
.
headers
[
'Access-Control-Allow-Credentials'
]
=
'true'
response
.
headers
[
'Access-Control-Max-Age'
]
=
86400
def
index
():
if
not
auth
.
user
:
res
=
{
"redirect"
:
"default/user/login"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
return
dict
(
message
=
T
(
'standard_list'
))
def
add
():
return
dict
(
message
=
T
(
'add standard file'
))
#TODO check data
def
add_form
():
import
shutil
,
os
.
path
id
=
db
.
standard_file
.
insert
(
data_file
=
request
.
vars
.
file
)
db
.
standard_file
[
id
]
=
dict
(
name
=
request
.
vars
[
'standard_name'
],
info
=
request
.
vars
[
'standard_info'
])
res
=
{
"success"
:
"true"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
def
edit
():
return
dict
(
message
=
T
(
'edit standard file'
))
def
edit_form
():
import
shutil
,
os
.
path
error
=
""
if
request
.
vars
[
"standard_name"
]
==
""
:
error
+=
"standard name needed, "
if
error
==
""
:
db
.
standard_file
[
request
.
vars
[
"id"
]]
=
dict
(
name
=
request
.
vars
[
'standard_name'
],
info
=
request
.
vars
[
'standard_info'
])
res
=
{
"success"
:
"true"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
else
:
res
=
{
"success"
:
"false"
,
"error"
:
error
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
def
confirm
():
return
dict
(
message
=
T
(
'confirm standard deletion'
))
def
delete
():
import
shutil
,
os
.
path
query
=
db
(
(
db
.
config
.
standard_id
==
request
.
vars
[
"id"
])).
select
()
for
row
in
query
:
#delete data file using old config
db
(
db
.
data_file
.
config_id
==
row
.
id
).
delete
()
#delete config
db
(
db
.
config
.
id
==
row
.
id
).
delete
()
#delete standard
db
(
db
.
standard_file
.
id
==
request
.
vars
[
"id"
]).
delete
()
res
=
{
"success"
:
"true"
}
return
gluon
.
contrib
.
simplejson
.
dumps
(
res
,
separators
=
(
','
,
':'
))
server/web2py/applications/vidjil/models/db.py
View file @
bcd6101b
...
...
@@ -84,7 +84,9 @@ db.define_table('patient',
Field
(
'first_name'
,
'string'
),
Field
(
'last_name'
,
'string'
),
Field
(
'birth'
,
'date'
),
Field
(
'info'
,
'text'
))
Field
(
'info'
,
'text'
),
Field
(
'id_label'
,
'string'
),
)
'''
db.patient.first_name.requires = IS_NOT_EMPTY( error_message='input needed' )
...
...
@@ -123,24 +125,24 @@ db.define_table('config',
Field
(
'germline'
,
'string'
))
db
.
define_table
(
'
data
_file'
,
db
.
define_table
(
'
results
_file'
,
Field
(
'sequence_file_id'
,
'reference sequence_file'
),
Field
(
'config_id'
,
'reference config'
),
Field
(
'run_date'
,
'date'
),
Field
(
'run_date'
,
'date
time
'
),
Field
(
'scheduler_task_id'
,
'integer'
),
Field
(
'data_file'
,
'upload'
,
length
=
1000000000000
,
autodelete
=
True
))
db
.
define_table
(
'fused_file'
,
Field
(
'patient_id'
,
'reference patient'
),
Field
(
'config_id'
,
'reference config'
),
Field
(
'fuse_date'
,
'date'
),
Field
(
'fuse_date'
,
'date
time
'
),
Field
(
'status'
,
'string'
),
Field
(
'fused_file'
,
'upload'
,
length
=
1000000000000
,
autodelete
=
True
))
db
.
define_table
(
'analysis_file'
,
Field
(
'patient_id'
,
'reference patient'
),
Field
(
'config_id'
,
'reference config'
),
Field
(
'analyze_date'
,
'date'
),
Field
(
'analyze_date'
,
'date
time
'
),
Field
(
'status'
,
'string'
),
Field
(
'analysis_file'
,
'upload'
,
length
=
1000000000000
,
autodelete
=
True
))
...
...
@@ -167,13 +169,13 @@ if db(db.auth_user.id > 0).count() == 0:
##création des configs de base
id_config_TRG
=
db
.
config
.
insert
(
name
=
'TRG'
,
command
=
'-c clones -z
2
0 -R 1 -r 1
00
'
,
command
=
'-c clones -z
10
0 -R 1 -r 1 '
,
info
=
'default trg config'
,
germline
=
'TRG'
)
id_config_IGH
=
db
.
config
.
insert
(
name
=
'IGH'
,
command
=
'-c clones -
z 2
0 -R 1 -r 1
00
'
,
command
=
'-c clones -
d -z 10
0 -R 1 -r 1 '
,
info
=
'default igh config'
,
germline
=
'IGH'
)
...
...
server/web2py/applications/vidjil/models/task.py
View file @
bcd6101b
...
...
@@ -5,15 +5,15 @@ def schedule_run(id_sequence, id_config):
id_patient
=
db
.
sequence_file
[
id_sequence
].
patient_id
#check
data
_file
row
=
db
(
(
db
.
data
_file
.
config_id
==
id_config
)
&
(
db
.
data
_file
.
sequence_file_id
==
id_sequence
)
#check
results
_file
row
=
db
(
(
db
.
results
_file
.
config_id
==
id_config
)
&
(
db
.
results
_file
.
sequence_file_id
==
id_sequence
)
).
select
()
if
len
(
row
)
>
0
:
## update
data_id
=
row
[
0
].
id
else
:
## create
data_id
=
db
.
data
_file
.
insert
(
sequence_file_id
=
id_sequence
,
data_id
=
db
.
results
_file
.
insert
(
sequence_file_id
=
id_sequence
,
config_id
=
id_config
)
## check fused_file
...
...
@@ -40,18 +40,16 @@ def schedule_run(id_sequence, id_config):
return
res
##add task to schedul
l
er
##add task to scheduler
task
=
scheduler
.
queue_task
(
'run'
,
[
id_sequence
,
id_config
,
data_id
,
fuse_id
]
,
repeats
=
1
,
timeout
=
6000
)
db
.
data
_file
[
data_id
]
=
dict
(
scheduler_task_id
=
task
.
id
)
db
.
results
_file
[
data_id
]
=
dict
(
scheduler_task_id
=
task
.
id
)