From a4f63be7da85d554c01082d775f8656df8638e09 Mon Sep 17 00:00:00 2001 From: JaktensTid Date: Sun, 3 Dec 2023 17:49:16 +0300 Subject: [PATCH] Adding conformations ui --- src/server/api_handlers/conformations.py | 28 +- src/server/frontend/src/storage.js | 1 + .../src/views/ConformationsFormView.vue | 104 ++++- .../frontend/src/views/ConformationsLab.vue | 2 +- .../conformations/conformations_pipeline.py | 441 ++++++++++-------- 5 files changed, 371 insertions(+), 205 deletions(-) diff --git a/src/server/api_handlers/conformations.py b/src/server/api_handlers/conformations.py index 296071c8..75127fd4 100644 --- a/src/server/api_handlers/conformations.py +++ b/src/server/api_handlers/conformations.py @@ -1,6 +1,6 @@ from flask import Request -#from src.server.services.conformations.conformations_pipeline import permute_simulation +from src.server.services.conformations.conformations_pipeline import pipeline from src.server.services.experiments_structure_loader import ConformationsExperimentsLoader from src.server.api_handlers.api_handler import ApiHandler @@ -41,9 +41,28 @@ def inference(self, request: Request) -> dict: protein_files = request.files.getlist('proteinFileInput') experiment_name = request.form['experimentName'] experiment_id = request.form['experimentId'] + total_frames = int(request.form['totalFramesInput']) + system_temp = float(request.form['tempInput']) + take_frame_every = int(request.form['takeFrameEveryInput']) + step_size = float(request.form['stepSizeInput']) + replace_nonstandard_residues = True if request.form['replaceNonstandardResiduesInput'] == 'on' else False + integrator = request.form['integratorSelect'] + friction_coeff = float(request.form['frictionCoeffInput']) + add_missing_hydrogens = True if request.form['addMissingHydrogensCheckbox'] == 'on' else False + add_missing_atoms = True if request.form['addMissingAtomsCheckbox'] == 'on' else False + ignore_missing_atoms = True if request.form['ignoreMissingAtomsCheckbox'] == 'on' else False - #simulation_result = permute_simulation(protein_files[0]) - simulation_result = '' + (simulation_result, errors) = pipeline(pdb_content=protein_files[0], + total_frames=total_frames, + take_frame_every=take_frame_every, + integrator=integrator, + friction_coeff=friction_coeff, + step_size=step_size, + temperature_kelvin=system_temp, + replace_nonstandard_residues=replace_nonstandard_residues, + add_missing_atoms=add_missing_atoms, + add_missing_hydrogens=add_missing_hydrogens, + ignore_missing=ignore_missing_atoms) if simulation_result: self.experiments_loader.store_experiment(experiment_id, simulation_result) self.experiments_loader.save_experiment_metadata(experiment_id, experiment_name) @@ -51,5 +70,6 @@ def inference(self, request: Request) -> dict: return { 'id': experiment_id, 'name': experiment_name, - 'data': {'pdb': simulation_result} + 'data': {'pdb': simulation_result}, + 'errors': errors } diff --git a/src/server/frontend/src/storage.js b/src/server/frontend/src/storage.js index 8da99e9e..7b1a7c4a 100644 --- a/src/server/frontend/src/storage.js +++ b/src/server/frontend/src/storage.js @@ -167,6 +167,7 @@ const store = createStore({ }, async conformations_inference({ commit }, { payload }) { const { form, experiment } = payload; + debugger; const formData = new FormData(form); formData.append('experimentId', experiment.id ?? ''); formData.append('experimentName', experiment.name); diff --git a/src/server/frontend/src/views/ConformationsFormView.vue b/src/server/frontend/src/views/ConformationsFormView.vue index 88fc8100..e0f20b65 100644 --- a/src/server/frontend/src/views/ConformationsFormView.vue +++ b/src/server/frontend/src/views/ConformationsFormView.vue @@ -5,24 +5,110 @@ export default { \ No newline at end of file diff --git a/src/server/frontend/src/views/ConformationsLab.vue b/src/server/frontend/src/views/ConformationsLab.vue index 32a6807b..19876bad 100644 --- a/src/server/frontend/src/views/ConformationsLab.vue +++ b/src/server/frontend/src/views/ConformationsLab.vue @@ -23,7 +23,7 @@ export default {