aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/load_phenotypes_to_db.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/scripts/load_phenotypes_to_db.py b/scripts/load_phenotypes_to_db.py
index 2be8096..9d8b82f 100644
--- a/scripts/load_phenotypes_to_db.py
+++ b/scripts/load_phenotypes_to_db.py
@@ -209,9 +209,20 @@ def save_phenotype_n(
def cross_reference_phenotypes_publications_and_data(
- conn: mysqldb.Connection, xref_data: tuple[dict, ...]):
+ conn: mysqldb.Connection, xref_data: tuple[dict, ...]
+):
"""Crossreference the phenotypes, publication and data."""
- pass
+ with conn.cursor(cursorclass=DictCursor) as cursor:
+ cursor.execute("SELECT MAX(Id) CurrentMaxId FROM PublishXRef")
+ _nextid = int(cursor.fetchone()["CurrentMaxId"]) + 1
+ cursor.execute(
+ ("INSERT INTO PublishXRef(Id, InbredSetId, PhenotypeId, PublicationId, DataId) "
+ "VALUES(%(xref_id)s, %(population_id)s, %(phenotype_id)s, %(data_id)s) "
+ "RETURNING *"),
+ tuple({**row, "xref_id": _id}
+ for _id, row in enumerate(xref_data, start=_next_id)))
+ return tuple(dict(row) for row in cursor.fetchall())
+ return tuple()
def update_auth(user, species, population, dataset, phenos):
@@ -236,6 +247,7 @@ def load_data(conn, job):
_phenos = save_phenotypes(cursor, _control_data)
dataidmap = {
row["phenotype_id"]: {
+ "population_id": population["Id"],
"phenotype_id": row["phenotype_id"],
"data_id": dataid,
"publication_id": _publication["Id"],
@@ -251,7 +263,7 @@ def load_data(conn, job):
data = save_pheno_data(conn, dataidmap, samples, _control_data)
# 4. Cross-reference Phenotype, Publication, and PublishData in PublishXRef
xrefs = cross_reference_phenotypes_publications_and_data(
- cursor, __merge_map_with_publications__(dataidmap))
+ conn, tuple(dataidmap.values()))
# 5. If standard errors and N exist, save them too
# (use IDs returned in `3. b.` above).
data_se = save_phenotypes_se(conn, dataidmap, samples, _control_data)