Skip to content

Commit 75b837d

Browse files
committed
wip
1 parent 4acc9b7 commit 75b837d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1121
-305
lines changed

pyproject.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ dependencies = [
2424
"numpy",
2525
"protobuf>=3.0.0",
2626
"pybids==0.17.0",
27+
"pydantic",
2728
"pydicom",
2829
"python-dateutil",
2930
"scikit-learn",
@@ -45,6 +46,7 @@ Homepage = "https://github.com/aces/loris-mri"
4546
[tool.hatch.build.targets.wheel]
4647
packages = [
4748
"python/lib",
49+
"python/loris_bids_reader",
4850
"python/loris_eeg_chunker",
4951
"python/tests",
5052
]
@@ -56,9 +58,13 @@ line-length = 120
5658
preview = true
5759

5860
[tool.ruff.lint]
59-
ignore = ["E202", "E203", "E221", "E241", "E251", "E272"]
61+
ignore = ["E202", "E203", "E221", "E241", "E251", "E271", "E272"]
6062
select = ["E", "EXE", "F", "I", "N", "RUF", "UP", "W"]
6163

64+
[tool.ruff.per-file-ignores]
65+
# Ignore line length in ORM models.
66+
"python/lib/db/models/*.py" = ["E501"]
67+
6268
# The strict type checking configuration is used to type check only the modern (typed) modules. An
6369
# additional basic type checking configuration to type check legacy modules can be found in the
6470
# `test` directory.
@@ -76,6 +82,7 @@ include = [
7682
"python/lib/get_session_info.py",
7783
"python/lib/logging.py",
7884
"python/lib/make_env.py",
85+
"python/loris_bids_reader",
7986
"python/scripts/import_bids_dataset.py",
8087
"python/scripts/import_dicom_study.py",
8188
"python/scripts/summarize_dicom_study.py",
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from sqlalchemy import ForeignKey
2+
from sqlalchemy.orm import Mapped, mapped_column
3+
4+
from lib.db.base import Base
5+
from lib.db.decorators.int_bool import IntBool
6+
7+
8+
class DbBidsEventDatasetMapping(Base):
9+
__tablename__ = 'bids_event_dataset_mapping'
10+
11+
id : Mapped[int] = mapped_column('ID', primary_key=True)
12+
project_id : Mapped[int] = mapped_column('ProjectID', ForeignKey('Project.ProjectID'))
13+
property_name : Mapped[str] = mapped_column('PropertyName')
14+
property_value : Mapped[str] = mapped_column('PropertyValue')
15+
hed_tag_id : Mapped[int | None] = mapped_column('HEDTagID', ForeignKey('hed_schema_nodes.ID'))
16+
tag_value : Mapped[str | None] = mapped_column('TagValue')
17+
description : Mapped[str | None] = mapped_column('Description')
18+
has_pairing : Mapped[bool | None] = mapped_column('HasPairing', IntBool)
19+
pair_rel_id : Mapped[int | None] = mapped_column('PairRelID')
20+
additional_members : Mapped[int | None] = mapped_column('AdditionalMembers')
21+
tagged_by : Mapped[int | None] = mapped_column('TaggedBy', ForeignKey('users.ID'))
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from sqlalchemy import ForeignKey
2+
from sqlalchemy.orm import Mapped, mapped_column
3+
4+
from lib.db.base import Base
5+
from lib.db.decorators.int_bool import IntBool
6+
7+
8+
class DbBidsEventFileMapping(Base):
9+
__tablename__ = 'bids_event_file_mapping'
10+
11+
id : Mapped[int] = mapped_column('ID', primary_key=True)
12+
event_file_id : Mapped[int] = mapped_column('EventFileID', ForeignKey('physiological_event_file.EventFileID'))
13+
property_name : Mapped[str] = mapped_column('PropertyName')
14+
property_value : Mapped[str] = mapped_column('PropertyValue')
15+
hed_tag_id : Mapped[int | None] = mapped_column('HEDTagID', ForeignKey('hed_schema_nodes.ID'))
16+
tag_value : Mapped[str | None] = mapped_column('TagValue')
17+
description : Mapped[str | None] = mapped_column('Description')
18+
has_pairing : Mapped[bool | None] = mapped_column('HasPairing', IntBool)
19+
pair_rel_id : Mapped[int | None] = mapped_column('PairRelID')
20+
additional_members : Mapped[int | None] = mapped_column('AdditionalMembers')
21+
tagged_by : Mapped[int | None] = mapped_column('TaggedBy', ForeignKey('users.ID'))

python/lib/db/models/hed_schema.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from sqlalchemy.orm import Mapped, mapped_column
2+
3+
from lib.db.base import Base
4+
5+
6+
class DbHedSchema(Base):
7+
__tablename__ = 'hed_schema'
8+
9+
id : Mapped[int] = mapped_column('ID', primary_key=True)
10+
name : Mapped[str] = mapped_column('Name')
11+
version : Mapped[str] = mapped_column('Version')
12+
description : Mapped[str | None] = mapped_column('Description')
13+
url : Mapped[str] = mapped_column('URL')
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from sqlalchemy import ForeignKey
2+
from sqlalchemy.orm import Mapped, mapped_column
3+
4+
from lib.db.base import Base
5+
6+
7+
class DbHedSchemaNode(Base):
8+
__tablename__ = 'hed_schema_nodes'
9+
10+
id : Mapped[int] = mapped_column('ID', primary_key=True)
11+
parent_id : Mapped[int | None] = mapped_column('ParentID', ForeignKey('hed_schema_nodes.ID'))
12+
schema_id : Mapped[int] = mapped_column('SchemaID', ForeignKey('hed_schema.ID'))
13+
name : Mapped[str] = mapped_column('Name')
14+
long_name : Mapped[str] = mapped_column('LongName')
15+
description : Mapped[str] = mapped_column('Description')
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from datetime import datetime
2+
from decimal import Decimal
3+
4+
from sqlalchemy import ForeignKey
5+
from sqlalchemy.orm import Mapped, mapped_column, relationship
6+
7+
import lib.db.models.physio_channel_type as db_physio_channel_type
8+
import lib.db.models.physio_file as db_physio_file
9+
import lib.db.models.physio_status_type as db_physio_status_type
10+
from lib.db.base import Base
11+
12+
13+
class DbPhysioChannel(Base):
14+
__tablename__ = 'physiological_channel'
15+
16+
id : Mapped[int] = mapped_column('PhysiologicalChannelID', primary_key=True)
17+
physio_file_id : Mapped[int] = mapped_column('PhysiologicalFileID', ForeignKey('physiological_file.PhysiologicalFileID'))
18+
channel_type_id : Mapped[int] = mapped_column('PhysiologicalChannelTypeID', ForeignKey('physiological_channel_type.PhysiologicalChannelTypeID'))
19+
status_type_id : Mapped[int | None] = mapped_column('PhysiologicalStatusTypeID', ForeignKey('physiological_status_type.PhysiologicalStatusTypeID'))
20+
insert_time : Mapped[datetime] = mapped_column('InsertTime', default=datetime.now)
21+
name : Mapped[str] = mapped_column('Name')
22+
description : Mapped[str | None] = mapped_column('Description')
23+
sampling_frequency : Mapped[int | None] = mapped_column('SamplingFrequency')
24+
low_cutoff : Mapped[Decimal | None] = mapped_column('LowCutoff')
25+
high_cutoff : Mapped[Decimal | None] = mapped_column('HighCutoff')
26+
manual_flag : Mapped[Decimal | None] = mapped_column('ManualFlag')
27+
notch : Mapped[int | None] = mapped_column('Notch')
28+
reference : Mapped[str | None] = mapped_column('Reference')
29+
status_description : Mapped[str | None] = mapped_column('StatusDescription')
30+
unit : Mapped[str | None] = mapped_column('Unit')
31+
file_path : Mapped[str | None] = mapped_column('FilePath')
32+
33+
physio_file : Mapped['db_physio_file.DbPhysioFile'] = relationship(back_populates='channels')
34+
channel_type : Mapped['db_physio_channel_type.DbPhysioChannelType'] = relationship()
35+
status_type : Mapped['db_physio_status_type.DbPhysioStatusType'] = relationship()
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from sqlalchemy.orm import Mapped, mapped_column
2+
3+
from lib.db.base import Base
4+
5+
6+
class DbPhysioChannelType(Base):
7+
__tablename__ = 'physiological_channel_type'
8+
9+
id : Mapped[int] = mapped_column('PhysiologicalChannelTypeID', primary_key=True)
10+
channel_type_name : Mapped[str] = mapped_column('ChannelTypeName')
11+
channel_description : Mapped[str | None] = mapped_column('ChannelDescription')
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from sqlalchemy import ForeignKey
2+
from sqlalchemy.orm import Mapped, mapped_column, relationship
3+
4+
import lib.db.models.physio_coord_system_name as db_physio_coord_system_name
5+
import lib.db.models.physio_coord_system_type as db_physio_coord_system_type
6+
import lib.db.models.physio_coord_system_unit as db_physio_coord_system_unit
7+
import lib.db.models.physio_modality as db_physio_modality
8+
from lib.db.base import Base
9+
10+
11+
class DbPhysioCoordSystem(Base):
12+
__tablename__ = 'physiological_coord_system'
13+
14+
id : Mapped[int] = mapped_column('PhysiologicalCoordSystemID', primary_key=True)
15+
name_id : Mapped[int] = mapped_column('NameID', ForeignKey('physiological_coord_system_name.PhysiologicalCoordSystemNameID'))
16+
type_id : Mapped[int] = mapped_column('TypeID', ForeignKey('physiological_coord_system_type.PhysiologicalCoordSystemTypeID'))
17+
unit_id : Mapped[int] = mapped_column('UnitID', ForeignKey('physiological_coord_system_unit.PhysiologicalCoordSystemUnitID'))
18+
modality_id : Mapped[int] = mapped_column('ModalityID', ForeignKey('physiological_modality.PhysiologicalModalityID'))
19+
file_path : Mapped[str | None] = mapped_column('FilePath')
20+
21+
name : Mapped['db_physio_coord_system_name.DbPhysioCoordSystemName'] = relationship()
22+
type : Mapped['db_physio_coord_system_type.DbPhysioCoordSystemType'] = relationship()
23+
unit : Mapped['db_physio_coord_system_unit.DbPhysioCoordSystemUnit'] = relationship()
24+
modality : Mapped['db_physio_modality.DbPhysioModality'] = relationship()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from sqlalchemy.orm import Mapped, mapped_column
2+
3+
from lib.db.base import Base
4+
5+
6+
class DbPhysioCoordSystemName(Base):
7+
__tablename__ = 'physiological_coord_system_name'
8+
9+
id : Mapped[int] = mapped_column('PhysiologicalCoordSystemNameID', primary_key=True)
10+
name : Mapped[str] = mapped_column('Name')
11+
orientation : Mapped[str | None] = mapped_column('Orientation')
12+
origin : Mapped[str | None] = mapped_column('Origin')
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from sqlalchemy.orm import Mapped, mapped_column
2+
3+
from lib.db.base import Base
4+
5+
6+
class DbPhysioCoordSystemType(Base):
7+
__tablename__ = 'physiological_coord_system_type'
8+
9+
id : Mapped[int] = mapped_column('PhysiologicalCoordSystemTypeID', primary_key=True)
10+
name : Mapped[str] = mapped_column('Name')

0 commit comments

Comments
 (0)