Skip to content

Commit

Permalink
Merge pull request #331 from AllenNeuralDynamics/release-v0.19.0
Browse files Browse the repository at this point in the history
Release v0.19.0
  • Loading branch information
jtyoung84 authored Jan 30, 2025
2 parents b9cb03c + 4ae9301 commit 1dd50c9
Show file tree
Hide file tree
Showing 27 changed files with 1,287 additions and 62 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/add_issue_to_project_board.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Auto add issues to project board
on:
issues:
types:
- opened

jobs:
add-to-project:
name: Add issue to project
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
project-url: https://github.com/orgs/AllenNeuralDynamics/projects/9
github-token: ${{ secrets.SERVICE_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/publish_dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Compute new docker image tag
run: |
echo "sha_short=$(git rev-parse --short "$GITHUB_SHA")" >> "$GITHUB_ENV"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish_main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
outputs:
pkg_version: ${{ steps.output_version.outputs.pkg_version }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Get version from file
run: |
pkg_name=$(grep -P 'version = \{attr = .*\}' pyproject.toml | grep -oP '\w+.__version__')
Expand Down Expand Up @@ -42,7 +42,7 @@ jobs:
ghcr.io/allenneuraldynamics/aind-metadata-service:${{ env.docker_tag }}
ghcr.io/allenneuraldynamics/aind-metadata-service:latest
- name: Set up Python 3.10
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/run_dev_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ jobs:
matrix:
python-version: [ '3.10', '3.11' ]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/run_main_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ jobs:
matrix:
python-version: [ '3.10', '3.11' ]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand All @@ -28,7 +28,7 @@ jobs:
verify_version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Check version incremented
run: |
pkg_name=$(grep -P 'version = \{attr = .*\}' pyproject.toml | grep -oP '\w+.__version__')
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ server = [
'fastapi==0.115.0',
'uvicorn[standard]==0.31.0',
'python-dateutil',
'aind-slims-api==0.1.17',
'aind-slims-api==0.1.19',
'azure-identity==1.15.0'
]

Expand Down
2 changes: 1 addition & 1 deletion src/aind_metadata_service/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""REST service to retrieve metadata from databases."""

__version__ = "0.18.1"
__version__ = "0.19.0"
18 changes: 16 additions & 2 deletions src/aind_metadata_service/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,14 @@ async def retrieve_procedures(subject_id):
subject_id=subject_id,
list_title=sharepoint_settings.las_2020_list,
)
# merge subject procedures
merged_response = sharepoint_client.merge_responses(
[lb_response, sp2019_response, sp2023_response, las2020_response]
[
lb_response,
sp2019_response,
sp2023_response,
las2020_response,
]
)
# integrate TARS response
mapper = TarsResponseHandler()
Expand Down Expand Up @@ -316,7 +322,15 @@ async def retrieve_procedures(subject_id):
integrated_response = protocols_integrator.integrate_protocols(
response=integrated_response, protocols_mapping=protocols_mapping
)
return integrated_response.map_to_json_response()
# merge specimen procedures
slims_response = await run_in_threadpool(
slims_client.get_specimen_procedures_model_response,
specimen_id=subject_id,
)
merged_response = sharepoint_client.merge_responses(
[integrated_response, slims_response]
)
return merged_response.map_to_json_response()


@app.get(
Expand Down
5 changes: 5 additions & 0 deletions src/aind_metadata_service/sharepoint/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,10 +212,15 @@ def _merge_procedures(
left_procedures[0].subject_procedures
+ right_procedures[0].subject_procedures
)
new_specimen_procedures = (
left_procedures[0].specimen_procedures
+ right_procedures[0].specimen_procedures
)
return [
Procedures.model_construct(
subject_id=subject_id,
subject_procedures=new_subject_procedures,
specimen_procedures=new_specimen_procedures,
)
]

Expand Down
38 changes: 36 additions & 2 deletions src/aind_metadata_service/slims/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,24 @@
import logging

from aind_data_schema.core.instrument import Instrument
from aind_data_schema.core.procedures import Procedures
from aind_data_schema.core.rig import Rig
from aind_slims_api import SlimsClient
from aind_slims_api.exceptions import SlimsRecordNotFound
from aind_slims_api.models.instrument import SlimsInstrumentRdrc
from aind_slims_api.operations.ecephys_session import fetch_ecephys_sessions
from aind_slims_api.operations import (
fetch_ecephys_sessions,
fetch_histology_procedures,
)
from pydantic import Extra, Field, SecretStr
from pydantic_settings import BaseSettings
from requests.models import Response
from slims.criteria import equals

from aind_metadata_service.client import StatusCodes
from aind_metadata_service.response_handler import ModelResponse
from aind_metadata_service.slims.mapping import SlimsSessionMapper
from aind_metadata_service.slims.procedures.mapping import SlimsHistologyMapper
from aind_metadata_service.slims.sessions.mapping import SlimsSessionMapper


class SlimsSettings(BaseSettings):
Expand Down Expand Up @@ -139,3 +144,32 @@ def get_sessions_model_response(self, subject_id: str) -> ModelResponse:
except Exception as e:
logging.error(repr(e))
return ModelResponse.internal_server_error_response()

def get_specimen_procedures_model_response(
self, specimen_id: str
) -> ModelResponse:
"""
Fetches specimen procedures for a given specimen ID from SLIMS.
"""
try:
procs = fetch_histology_procedures(
specimen_id=specimen_id, client=self.client
)
if procs:
mapper = SlimsHistologyMapper()
mapped_procedures = mapper.map_specimen_procedures(
procs, specimen_id
)
procedures = Procedures.model_construct(subject_id=specimen_id)
procedures.specimen_procedures = mapped_procedures
return ModelResponse(
aind_models=[procedures],
status_code=StatusCodes.DB_RESPONDED,
)
else:
return ModelResponse.no_data_found_error_response()
except SlimsRecordNotFound:
return ModelResponse.no_data_found_error_response()
except Exception as e:
logging.error(repr(e))
return ModelResponse.internal_server_error_response()
1 change: 1 addition & 0 deletions src/aind_metadata_service/slims/procedures/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Package to handle retrieving procedures information from SLIMS"""
Loading

0 comments on commit 1dd50c9

Please sign in to comment.