aboutsummaryrefslogtreecommitdiff
path: root/qc_app/upload/rqtl2.py
diff options
context:
space:
mode:
Diffstat (limited to 'qc_app/upload/rqtl2.py')
-rw-r--r--qc_app/upload/rqtl2.py65
1 files changed, 63 insertions, 2 deletions
diff --git a/qc_app/upload/rqtl2.py b/qc_app/upload/rqtl2.py
index fc4e0e8..0b446ac 100644
--- a/qc_app/upload/rqtl2.py
+++ b/qc_app/upload/rqtl2.py
@@ -22,6 +22,7 @@ from qc_app.db_utils import with_db_connection, database_connection
from qc_app.db.tissues import all_tissues, tissue_by_id
from qc_app.db.platforms import platform_by_id, platforms_by_species
+from qc_app.db.averaging import averaging_methods, averaging_method_by_id
from qc_app.db import (
species_by_id,
save_population,
@@ -33,6 +34,7 @@ from qc_app.db.datasets import (
probeset_study_by_id,
probeset_create_study,
+ probeset_create_dataset,
probeset_datasets_by_study,
probeset_studies_by_species_and_population)
@@ -349,7 +351,7 @@ def select_probeset_dataset(species_id: int, population_id: int):
population_id=population_id),
code=307)
if not bool(probeset_study_by_id(conn, int(request.form["probe-study-id"]))):
- flash("Invalid dataset selected!", "alert-error alert-rqtl2")
+ flash("Invalid study selected!", "alert-error alert-rqtl2")
return summary_page
return summary_page
@@ -398,6 +400,64 @@ def create_probeset_study(species_id: int, population_id: int):
study=study)
@rqtl2.route(("/upload/species/<int:species_id>/population/<int:population_id>"
+ "/rqtl2-bundle/create-probeset-dataset"),
+ methods=["POST"])
+def create_probeset_dataset(species_id: int, population_id: int):#pylint: disable=[too-many-return-statements]
+ """Create a new probeset dataset."""
+ with database_connection(app.config["SQL_URI"]) as conn:
+ error = check_errors(
+ conn, "species", "population", "rqtl2_bundle_file", "geno-dataset",
+ "probe-study-id")
+ if bool(error):
+ return error
+
+ form = request.form
+ summary_page = redirect(url_for("upload.rqtl2.select_dataset_info",
+ species_id=species_id,
+ population_id=population_id),
+ code=307)
+ if not bool(form.get("averageid")):
+ flash("Averaging method not selected!", "alert-error alert-rqtl2")
+ return summary_page
+ if not bool(form.get("datasetname")):
+ flash("Dataset name not provided!", "alert-error alert-rqtl2")
+ return summary_page
+ if not bool(form.get("datasetfullname")):
+ flash("Dataset full name not provided!", "alert-error alert-rqtl2")
+ return summary_page
+
+ study = probeset_study_by_id(conn, int(form["probe-study-id"]))
+ if not bool(study):
+ flash("Invalid ProbeSet study provided!", "alert-error alert-rqtl2")
+ return summary_page
+
+ avgmethod = averaging_method_by_id(conn, int(form["averageid"]))
+ if not bool(avgmethod):
+ flash("Invalid averaging method provided!", "alert-error alert-rqtl2")
+ return summary_page
+
+ dset = probeset_create_dataset(conn,
+ int(form["probe-study-id"]),
+ int(form["averageid"]),
+ form["datasetname"],
+ form["datasetfullname"],
+ form["datasetshortname"],
+ form["datasetpublic"] == "on",
+ form.get("datasetdatascale", "log2"))
+ return render_template(
+ "rqtl2/create-probe-dataset-success.html",
+ species=species_by_id(conn, species_id),
+ population=population_by_species_and_id(
+ conn, species_id, population_id),
+ rqtl2_bundle_file=request.form["rqtl2_bundle_file"],
+ geno_dataset=geno_dataset_by_id(
+ conn,
+ int(request.form["geno-dataset-id"])),
+ study=study,
+ avgmethod=avgmethod,
+ dataset=dset)
+
+@rqtl2.route(("/upload/species/<int:species_id>/population/<int:population_id>"
"/rqtl2-bundle/dataset-info"),
methods=["POST"])
def select_dataset_info(species_id: int, population_id: int):
@@ -450,7 +510,8 @@ def select_dataset_info(species_id: int, population_id: int):
geno_dataset=geno_dataset,
probe_study=probeset_study,
datasets=probeset_datasets_by_study(
- conn, int(form["probe-study-id"])))
+ conn, int(form["probe-study-id"])),
+ avgmethods=averaging_methods(conn))
return render_template("rqtl2/summary-info.html",
species=species,