|
2 | 2 |
|
3 | 3 | import numpy as np |
4 | 4 | import pandas as pd |
5 | | -import json |
6 | 5 | from pandas.testing import assert_index_equal |
7 | | -from sqlalchemy import func, or_, and_ |
8 | | -from sqlalchemy.orm import Session, aliased |
| 6 | +from sqlalchemy import func, or_ |
| 7 | +from sqlalchemy.orm import aliased, contains_eager, joinedload, selectinload, Session |
9 | 8 |
|
10 | 9 | from mavedb.lib.array_comparison import assert_array_equal |
11 | 10 | from mavedb.lib.exceptions import ValidationError |
|
17 | 16 | VARIANT_SCORE_DATA, |
18 | 17 | ) |
19 | 18 | from mavedb.lib.mave.utils import is_csv_null |
| 19 | +from mavedb.models.ensembl_offset import EnsemblOffset |
20 | 20 | from mavedb.models.experiment import Experiment |
| 21 | +from mavedb.models.experiment_publication_identifier import ExperimentPublicationIdentifierAssociation |
21 | 22 | from mavedb.models.experiment_set import ExperimentSet |
22 | 23 | from mavedb.models.keyword import Keyword |
23 | 24 | from mavedb.models.publication_identifier import PublicationIdentifier |
| 25 | +from mavedb.models.score_set_publication_identifier import ScoreSetPublicationIdentifierAssociation |
24 | 26 | from mavedb.models.reference_genome import ReferenceGenome |
| 27 | +from mavedb.models.refseq_offset import RefseqOffset |
25 | 28 | from mavedb.models.score_set import ScoreSet |
26 | 29 | from mavedb.models.target_accession import TargetAccession |
27 | 30 | from mavedb.models.target_gene import TargetGene |
28 | 31 | from mavedb.models.target_sequence import TargetSequence |
| 32 | +from mavedb.models.uniprot_offset import UniprotOffset |
29 | 33 | from mavedb.models.user import User |
30 | 34 | from mavedb.view_models.search import ScoreSetsSearch |
31 | 35 |
|
@@ -127,7 +131,50 @@ def search_score_sets(db: Session, owner: Optional[User], search: ScoreSetsSearc |
127 | 131 | ) |
128 | 132 |
|
129 | 133 | score_sets: list[ScoreSet] = ( |
130 | | - query.join(ScoreSet.experiment).join(ScoreSet.target_genes).order_by(Experiment.title).all() |
| 134 | + query.join(ScoreSet.experiment) |
| 135 | + .options( |
| 136 | + contains_eager(ScoreSet.experiment).options( |
| 137 | + joinedload(Experiment.experiment_set), |
| 138 | + joinedload(Experiment.keyword_objs), |
| 139 | + joinedload(Experiment.created_by), |
| 140 | + joinedload(Experiment.modified_by), |
| 141 | + joinedload(Experiment.keyword_objs), |
| 142 | + joinedload(Experiment.doi_identifiers), |
| 143 | + joinedload(Experiment.publication_identifier_associations).joinedload( |
| 144 | + ExperimentPublicationIdentifierAssociation.publication |
| 145 | + ), |
| 146 | + joinedload(Experiment.raw_read_identifiers), |
| 147 | + selectinload(Experiment.score_sets).options( |
| 148 | + joinedload(ScoreSet.keyword_objs), |
| 149 | + joinedload(ScoreSet.doi_identifiers), |
| 150 | + joinedload(ScoreSet.publication_identifier_associations).joinedload( |
| 151 | + ScoreSetPublicationIdentifierAssociation.publication |
| 152 | + ), |
| 153 | + joinedload(ScoreSet.target_genes).options( |
| 154 | + joinedload(TargetGene.ensembl_offset).joinedload(EnsemblOffset.identifier), |
| 155 | + joinedload(TargetGene.refseq_offset).joinedload(RefseqOffset.identifier), |
| 156 | + joinedload(TargetGene.uniprot_offset).joinedload(UniprotOffset.identifier), |
| 157 | + joinedload(TargetGene.target_sequence).joinedload(TargetSequence.reference), |
| 158 | + joinedload(TargetGene.target_accession), |
| 159 | + ), |
| 160 | + ), |
| 161 | + ), |
| 162 | + joinedload(ScoreSet.keyword_objs), |
| 163 | + joinedload(ScoreSet.license), |
| 164 | + joinedload(ScoreSet.doi_identifiers), |
| 165 | + joinedload(ScoreSet.publication_identifier_associations).joinedload( |
| 166 | + ScoreSetPublicationIdentifierAssociation.publication |
| 167 | + ), |
| 168 | + joinedload(ScoreSet.target_genes).options( |
| 169 | + joinedload(TargetGene.ensembl_offset).joinedload(EnsemblOffset.identifier), |
| 170 | + joinedload(TargetGene.refseq_offset).joinedload(RefseqOffset.identifier), |
| 171 | + joinedload(TargetGene.uniprot_offset).joinedload(UniprotOffset.identifier), |
| 172 | + joinedload(TargetGene.target_sequence).joinedload(TargetSequence.reference), |
| 173 | + joinedload(TargetGene.target_accession), |
| 174 | + ), |
| 175 | + ) |
| 176 | + .order_by(Experiment.title) |
| 177 | + .all() |
131 | 178 | ) |
132 | 179 | if not score_sets: |
133 | 180 | score_sets = [] |
|
0 commit comments