From 54188c596af5aaee9b782fedf3596d0e2d46e197 Mon Sep 17 00:00:00 2001 From: Martijn Vermaat <martijn@vermaat.name> Date: Mon, 18 May 2015 14:31:39 +0200 Subject: [PATCH] Limit input sequence length for description extractor This is hopefully a temporary measure. At the moment we cannot accurately predict the running time of the extractor, so we have to aggressively limit the input based on the worst-case expectation. As a worst-case scenario, we currently use random input sequences, where length 1000bp yields about 500ms of running time. In the future we hope to either: 1. Predict the running time and abort if needed. 2. Keep track of the running time and abort if needed. 3. Run the extractor in a task scheduler with a running time limit. --- mutalyzer/services/rpc.py | 5 +++++ mutalyzer/website/templates/description-extractor.html | 9 ++++++--- mutalyzer/website/views.py | 6 +++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/mutalyzer/services/rpc.py b/mutalyzer/services/rpc.py index 77027112..3e326417 100644 --- a/mutalyzer/services/rpc.py +++ b/mutalyzer/services/rpc.py @@ -1240,6 +1240,11 @@ class MutalyzerService(ServiceBase): output.addMessage(__file__, -1, 'INFO', 'Received request descriptionExtract') + if not settings.TESTING and (len(reference) > 1000 or + len(observed) > 1000): + raise Fault('EMAXSIZE', + 'Input sequences are restricted to 1000bp.') + allele = extractor.describe_dna(reference, observed) result = Allele() diff --git a/mutalyzer/website/templates/description-extractor.html b/mutalyzer/website/templates/description-extractor.html index ebf8ef51..5927bf3e 100644 --- a/mutalyzer/website/templates/description-extractor.html +++ b/mutalyzer/website/templates/description-extractor.html @@ -5,7 +5,10 @@ {% block content %} -<p class="alert alert-warning">Note that this is an experimental service.</p> +<p class="alert alert-warning"> +Please note that this is an experimental service and we are currently limiting +input sequences to 1000bp. +</p> <p> Extract the HGVS variant description from a reference sequence and an observed @@ -85,7 +88,7 @@ Please supply a reference sequence and an observed sequence. <div class="form-group"> <label for="reference_accession_number">Reference accession number</label> <input type="text" name="reference_accession_number" id="reference_accession_number" value="{{ reference_accession_number }}" class="form-control form-pre example-target" placeholder="Reference accession number"> - <p>Example: <code class="example-input" data-for="reference_accession_number">NM_004006.1</code></p> + <p>Example: <code class="example-input" data-for="reference_accession_number">NM_198697.1</code></p> </div> </div> </div> @@ -140,7 +143,7 @@ Please supply a reference sequence and an observed sequence. <div class="form-group"> <label for="sample_accession_number">Sample accession number</label> <input type="text" name="sample_accession_number" id="sample_accession_number" value="{{ sample_accession_number }}" class="form-control form-pre example-target-2" placeholder="Sample accession number"> - <p>Example: <code class="example-input" data-for="sample_accession_number">NM_004006.2</code></p> + <p>Example: <code class="example-input" data-for="sample_accession_number">NM_198697.2</code></p> </div> </div> </div> diff --git a/mutalyzer/website/views.py b/mutalyzer/website/views.py index b3b63e9b..fffb8bb6 100644 --- a/mutalyzer/website/views.py +++ b/mutalyzer/website/views.py @@ -783,7 +783,11 @@ def description_extractor_submit(): raw_vars = None if r and s: - raw_vars = extractor.describe_dna(r, s) + if not settings.TESTING and (len(r) > 1000 or len(s) > 1000): + output.addMessage(__file__, 3, 'EMAXSIZE', + 'Input sequences are restricted to 1000bp.') + else: + raw_vars = extractor.describe_dna(r, s) errors, warnings, summary = output.Summary() messages = map(util.message_info, output.getMessages()) -- GitLab