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
pbansal
Test-Docker
Commits
cae77f1d
Commit
cae77f1d
authored
Sep 18, 2019
by
Ian Sillitoe
Browse files
do not add multiple hits per query region (only keep best evalue)
parent
dfdb7bbc
Changes
1
Hide whitespace changes
Inline
Side-by-side
select_template_api/models.py
View file @
cae77f1d
...
...
@@ -265,6 +265,8 @@ class SelectTemplateTask(models.Model):
"""This class represents an overall select template task."""
MAX_OVERLAPPING_RESIDUES
=
10
uuid
=
models
.
UUIDField
(
default
=
uuid
.
uuid4
,
editable
=
False
,
unique
=
True
)
query_id
=
models
.
CharField
(
max_length
=
50
,
blank
=
False
,
unique
=
False
)
...
...
@@ -405,6 +407,7 @@ class SelectTemplateTask(models.Model):
" %d of those FunFams have a representative CATH domain structure."
),
len
(
result
.
hits
),
len
(
scan_hits_with_structure
))
query_modelled
=
'-'
*
len
(
self
.
query_sequence
)
hits
=
[]
for
hit_idx
,
scan_hit
in
enumerate
(
scan_hits_with_structure
):
LOG
.
info
(
"Working on hit [%d of %d] %s: %s ... "
,
...
...
@@ -415,6 +418,27 @@ class SelectTemplateTask(models.Model):
LOG
.
info
(
"Adding SelectTemplateHit for best structural match in region %s: funfam=%s"
,
query_range
,
scan_hit
.
match_name
)
# count how many of the residues in this hit have already been modelled
overlap_residues
=
0
hit_length
=
0
for
hsp
in
scan_hit
.
hsps
:
query_start
=
int
(
hsp
.
query_start
)
query_end
=
int
(
hsp
.
query_end
)
hsp_length
=
query_end
-
query_start
+
1
overlap_residues
+=
query_modelled
[
query_start
:
query_end
+
1
].
count
(
'#'
)
hit_length
+=
hsp_length
LOG
.
info
(
"HIT_RANGE: %s"
,
query_range
)
LOG
.
info
(
"PREVIOUSLY MODELLED: %s (length=%s, overlap=%s)"
,
query_modelled
,
len
(
query_modelled
),
overlap_residues
)
if
overlap_residues
>
self
.
MAX_OVERLAPPING_RESIDUES
:
LOG
.
info
(
"Hit overlaps with previously processed by %s residues (skipping)"
,
overlap_residues
)
continue
hit
=
None
err_msg
=
None
try
:
...
...
@@ -423,6 +447,20 @@ class SelectTemplateTask(models.Model):
cath_version
=
cath_version
,
task_uuid
=
self
.
uuid
,
is_resolved_hit
=
use_resolved_scan
)
# if this was successful then keep track of the
# bits of the query sequence that have been modelled
for
hsp
in
scan_hit
.
hsps
:
query_start
=
int
(
hsp
.
query_start
)
query_end
=
int
(
hsp
.
query_end
)
query_modelled
=
(
query_modelled
[:
query_start
]
+
'#'
*
(
query_end
-
query_start
+
1
)
+
query_modelled
[
query_end
+
1
:])
LOG
.
info
(
"NOW MODELLED: %s (length=%s)"
,
query_modelled
,
len
(
query_modelled
))
except
err
.
NoDomainsError
:
err_msg
=
"no valid domains"
except
err
.
NoStructureDomainsError
:
...
...
@@ -434,7 +472,7 @@ class SelectTemplateTask(models.Model):
hit
.
save
()
hits
.
extend
([
hit
])
else
:
LOG
.
warn
(
"cannot create hit %s: %s"
,
scan_hit
,
err_msg
)
LOG
.
warn
ing
(
"cannot create hit %s: %s"
,
scan_hit
,
err_msg
)
self
.
message
=
"Created {} hits"
.
format
(
len
(
hits
))
self
.
save
()
...
...
Write
Preview
Markdown
is supported
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