From 9c44b835c91f7578c2f941eae1b5f15d6314eacc Mon Sep 17 00:00:00 2001 From: Nikolay Akhmetov Date: Wed, 12 Feb 2025 09:56:58 -0500 Subject: [PATCH 1/3] update cellpop to prevent overlap with appbar --- context/package-lock.json | 8 ++++---- context/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/context/package-lock.json b/context/package-lock.json index 012e1ecfac..5602b53f61 100644 --- a/context/package-lock.json +++ b/context/package-lock.json @@ -40,7 +40,7 @@ "@visx/text": "^3.3.0", "@visx/tooltip": "^3.3.0", "@xyflow/react": "^12.0.3", - "cellpop": "^0.0.12", + "cellpop": "^0.0.13", "chart.js": "^4.4.2", "d3": "^7.9.0", "d3-array": "^3.2.4", @@ -15876,9 +15876,9 @@ } }, "node_modules/cellpop": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/cellpop/-/cellpop-0.0.12.tgz", - "integrity": "sha512-yZ3luOyh336kVBNbvfOqhYPbGGCVH13usIdTzy1y2+DmXWIytkhJDqRG1qdpASuNO0SQQ1bmy0ZvDuurIzcjwg==", + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/cellpop/-/cellpop-0.0.13.tgz", + "integrity": "sha512-bghfl0GLXvBYm2mO7yjHox2zB+Popeb0CLsfBSihRIbeuhjS9k2sRL2qBvyoQBZhNXJYo+Cgirr9aqka5/RVBg==", "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", diff --git a/context/package.json b/context/package.json index 8f15ff9951..288329393e 100644 --- a/context/package.json +++ b/context/package.json @@ -33,7 +33,7 @@ "@visx/text": "^3.3.0", "@visx/tooltip": "^3.3.0", "@xyflow/react": "^12.0.3", - "cellpop": "^0.0.12", + "cellpop": "^0.0.13", "chart.js": "^4.4.2", "d3": "^7.9.0", "d3-array": "^3.2.4", From 2716665fa5722ccb1dfa14c8c4d7dc65f319bf43 Mon Sep 17 00:00:00 2001 From: Nikolay Akhmetov Date: Wed, 12 Feb 2025 10:03:28 -0500 Subject: [PATCH 2/3] add laterality search terms to organ files that were missing them, improve organ lookup logic to accept search terms as synonyms --- CHANGELOG-organ-page-fixes.md | 4 ++++ context/app/organ/fallopian-tube.yaml | 4 +++- context/app/organ/ovary.yaml | 4 +++- context/app/organ/urinary-bladder.yaml | 3 ++- context/app/routes_file_based.py | 8 +++++--- context/app/utils.py | 13 +++++++++++++ 6 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 CHANGELOG-organ-page-fixes.md diff --git a/CHANGELOG-organ-page-fixes.md b/CHANGELOG-organ-page-fixes.md new file mode 100644 index 0000000000..a0217c70db --- /dev/null +++ b/CHANGELOG-organ-page-fixes.md @@ -0,0 +1,4 @@ +- Ensure ovary and fallopian tube organ pages are properly populated with left/right laterality datasets. +- Ensure urinary bladder organ page includes Bladder datasets. +- Ensure bladder organ icon displays appropriately. +- Ensure cell population plot controls drawer does not overlap the app bar. diff --git a/context/app/organ/fallopian-tube.yaml b/context/app/organ/fallopian-tube.yaml index 9a46f3e434..f26ea6d08d 100644 --- a/context/app/organ/fallopian-tube.yaml +++ b/context/app/organ/fallopian-tube.yaml @@ -8,4 +8,6 @@ description: Initial section of the oviduct through which the ova pass from the to the uterus. icon: https://cdn.jsdelivr.net/gh/cns-iu/md-icons@main/other-icons/organs/ico-organs-fallopian-tube-left.svg has_iu_component: true -search: [] \ No newline at end of file +search: + - Fallopian Tube (Left) + - Fallopian Tube (Right) diff --git a/context/app/organ/ovary.yaml b/context/app/organ/ovary.yaml index b89c43f065..1fe6feefde 100644 --- a/context/app/organ/ovary.yaml +++ b/context/app/organ/ovary.yaml @@ -7,4 +7,6 @@ asctb: ovary-v1.2 description: The gonad of a female organism which contains germ cells. icon: https://cdn.jsdelivr.net/gh/cns-iu/md-icons@main/other-icons/organs/ico-organs-ovaries.svg has_iu_component: true -search: [] \ No newline at end of file +search: + - Ovary (Left) + - Ovary (Right) diff --git a/context/app/organ/urinary-bladder.yaml b/context/app/organ/urinary-bladder.yaml index ea99fb158f..8d4786a356 100644 --- a/context/app/organ/urinary-bladder.yaml +++ b/context/app/organ/urinary-bladder.yaml @@ -8,4 +8,5 @@ description: Distensible musculomembranous organ situated in the anterior part o the pelvic cavity in which urine collects before excretion[MP]. icon: https://cdn.jsdelivr.net/gh/cns-iu/md-icons@main/other-icons/organs/ico-organs-bladder.svg has_iu_component: true -search: [] \ No newline at end of file +search: + - Bladder diff --git a/context/app/routes_file_based.py b/context/app/routes_file_based.py index aca5cbb3c1..191739c025 100644 --- a/context/app/routes_file_based.py +++ b/context/app/routes_file_based.py @@ -7,7 +7,7 @@ import frontmatter -from .utils import get_default_flask_data, make_blueprint, get_organs +from .utils import get_default_flask_data, get_organ_name_mapping, make_blueprint, get_organs blueprint = make_blueprint(__name__) @@ -80,13 +80,15 @@ def organ_details_view(name): @blueprint.route('/organ/.json') def get_organ_details(name): organs = get_organs() + organ_names = get_organ_name_mapping() # Remove all spaces, underscores, and any text in parentheses normalized_name = name.lower().strip() normalized_name = normalized_name.split('(')[0].strip().replace( ' ', '-').replace('_', '-') - if normalized_name not in organs: + safe_organ_name = organ_names.get(normalized_name) + if safe_organ_name not in organs: return {} - filename = Path(dirname(__file__)) / 'organ' / f'{secure_filename(normalized_name)}.yaml' + filename = Path(dirname(__file__)) / 'organ' / f'{secure_filename(safe_organ_name)}.yaml' organ = safe_load(filename.read_text()) return organ diff --git a/context/app/utils.py b/context/app/utils.py index 310ea563c9..8b80458a8f 100644 --- a/context/app/utils.py +++ b/context/app/utils.py @@ -66,6 +66,19 @@ def get_organs(): return organs +def get_organ_name_mapping(): + organs = get_organs() + organ_file_names = {k: k for k, _ in organs.items()} + # Add search field for each organ as additional keys + for k, v in organs.items(): + search = v['search'] + if len(search) > 0: + for s in search: + organ_file_names[s.lower()] = k + print(organ_file_names) + return organ_file_names + + # Redirect to primary dataset if this entity is # - non-existent # - a support entity (e.g. an image pyramid) From fac6478b42b996b5cf454dd70642264f55bb64a7 Mon Sep 17 00:00:00 2001 From: Nikolay Akhmetov Date: Wed, 12 Feb 2025 13:02:08 -0500 Subject: [PATCH 3/3] Update utils.py, remove print statement --- context/app/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/context/app/utils.py b/context/app/utils.py index 8b80458a8f..49c6125e6b 100644 --- a/context/app/utils.py +++ b/context/app/utils.py @@ -75,7 +75,6 @@ def get_organ_name_mapping(): if len(search) > 0: for s in search: organ_file_names[s.lower()] = k - print(organ_file_names) return organ_file_names