Skip to content

Commit 47ff414

Browse files
committed
add special logic for modality
1 parent fd5eefd commit 47ff414

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

store/backend/neurostore/models/data.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,13 @@ def validate_version(self, key, value):
753753

754754
class PipelineStudyResult(BaseMixin, db.Model):
755755
__tablename__ = "pipeline_study_results"
756+
__table_args__ = (
757+
sa.Index(
758+
"ix_pipeline_study_results__modality",
759+
sa.text("(result_data -> 'Modality')"),
760+
postgresql_using="gin",
761+
),
762+
)
756763

757764
config_id = db.Column(
758765
db.Text, db.ForeignKey("pipeline_configs.id", ondelete="CASCADE"), index=True

store/backend/neurostore/resources/data.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,27 @@ def view_search(self, q, args):
956956
for idx, (field_path, operator, value) in enumerate(
957957
filters["result_filters"]
958958
):
959+
normalized_field = field_path.replace("[]", "")
960+
if (
961+
pipeline_name == "TaskExtractor"
962+
and normalized_field == "Modality"
963+
and operator == "="
964+
):
965+
modality_values = [
966+
val.strip() for val in value.split("|") if val.strip()
967+
]
968+
if modality_values:
969+
pipeline_query = pipeline_query.filter(
970+
sae.or_(
971+
*[
972+
PipelineStudyResultAlias.result_data["Modality"]
973+
.contains([modality_value])
974+
for modality_value in modality_values
975+
]
976+
)
977+
)
978+
pipeline_subqueries.append(pipeline_query.subquery())
979+
continue
959980
jsonpath = build_jsonpath(field_path, operator, value)
960981
param_name = f"jsonpath_result_{pipeline_name}_{idx}"
961982
pipeline_query = pipeline_query.filter(

0 commit comments

Comments
 (0)