Skip to content
Snippets Groups Projects
Commit 02089369 authored by Rafal Gumienny's avatar Rafal Gumienny
Browse files

fix: SCHWED-3121 Save alignments in the output, pull out chain_mapping

parent ab48d7f8
Branches
Tags
No related merge requests found
...@@ -450,6 +450,25 @@ def _CheckConsistency(reference, model, chain_mapping, log_error): ...@@ -450,6 +450,25 @@ def _CheckConsistency(reference, model, chain_mapping, log_error):
return is_cons return is_cons
def _GetAlignmentsAsFasta(alignments):
"""Get the alignments as FASTA formated string.
:param alignments: Alignments
:type alignments: list of AlignmentHandle
:returns: list of alignments in FASTA format
:rtype: list of strings
"""
strings = list()
for alignment in alignments:
aln_str = ">reference:%s\n%s\n>model:%s\n%s" % (
alignment.GetSequence(0).name,
alignment.GetSequence(0).GetString(),
alignment.GetSequence(1).name,
alignment.GetSequence(1).GetString())
strings.append(aln_str)
return strings
def _ReadStructureFile(path): def _ReadStructureFile(path):
"""Safely read structure file into OST entity. """Safely read structure file into OST entity.
...@@ -618,6 +637,9 @@ def _Main(): ...@@ -618,6 +637,9 @@ def _Main():
qs_scorer.chain_mapping, qs_scorer.chain_mapping,
opts.consistency_checks) opts.consistency_checks)
reference_results["info"]["residue_names_consistent"] = is_cons reference_results["info"]["residue_names_consistent"] = is_cons
reference_results["info"]["mapping"] = {
"chain_mapping": qs_scorer.chain_mapping,
"alignments": _GetAlignmentsAsFasta(qs_scorer.alignments)}
skip_score = False skip_score = False
if opts.consistency_checks: if opts.consistency_checks:
if not is_cons: if not is_cons:
...@@ -653,8 +675,7 @@ def _Main(): ...@@ -653,8 +675,7 @@ def _Main():
"model_name": model_name, "model_name": model_name,
"reference_name": reference_name, "reference_name": reference_name,
"global_score": 0.0, "global_score": 0.0,
"best_score": 0.0, "best_score": 0.0}
"chain_mapping": qs_scorer.chain_mapping}
else: else:
ost.LogInfo("Computing QS-score") ost.LogInfo("Computing QS-score")
try: try:
...@@ -664,8 +685,7 @@ def _Main(): ...@@ -664,8 +685,7 @@ def _Main():
"model_name": model_name, "model_name": model_name,
"reference_name": reference_name, "reference_name": reference_name,
"global_score": qs_scorer.global_score, "global_score": qs_scorer.global_score,
"best_score": qs_scorer.best_score, "best_score": qs_scorer.best_score}
"chain_mapping": qs_scorer.chain_mapping}
except qsscoring.QSscoreError as ex: except qsscoring.QSscoreError as ex:
# default handling: report failure and set score to 0 # default handling: report failure and set score to 0
ost.LogError('QSscore failed:', str(ex)) ost.LogError('QSscore failed:', str(ex))
...@@ -675,8 +695,7 @@ def _Main(): ...@@ -675,8 +695,7 @@ def _Main():
"model_name": model_name, "model_name": model_name,
"reference_name": reference_name, "reference_name": reference_name,
"global_score": 0.0, "global_score": 0.0,
"best_score": 0.0, "best_score": 0.0}
"chain_mapping": qs_scorer.chain_mapping}
# Calculate lDDT # Calculate lDDT
if opts.lddt: if opts.lddt:
ost.LogInfo("-" * 80) ost.LogInfo("-" * 80)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment