Skip to content

Commit ce045b6

Browse files
committed
Merge together all similar tables
1 parent 1b1cf5f commit ce045b6

File tree

2 files changed

+54
-76
lines changed

2 files changed

+54
-76
lines changed

src/murfey/util/db.py

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111

1212
from murfey.util.processing_db import (
1313
CTF,
14-
Atlas,
1514
MotionCorrection,
16-
Movie as ProcessingMovie,
1715
ParticleClassificationGroup,
1816
ParticlePicker,
1917
RelativeIceThickness,
18+
TiltImageAlignment,
2019
Tomogram,
2120
)
2221

@@ -440,7 +439,14 @@ class DataCollectionGroup(SQLModel, table=True): # type: ignore
440439
sa_relationship_kwargs={"cascade": "delete"},
441440
)
442441
)
443-
Atlas: List["Atlas"] = Relationship(back_populates="DataCollectionGroup")
442+
grid_squares: List["GridSquare"] = Relationship(
443+
back_populates="data_collection_group",
444+
sa_relationship_kwargs={"cascade": "delete"},
445+
)
446+
search_maps: List["SearchMap"] = Relationship(
447+
back_populates="data_collection_group",
448+
sa_relationship_kwargs={"cascade": "delete"},
449+
)
444450

445451

446452
class NotificationParameter(SQLModel, table=True): # type: ignore
@@ -480,7 +486,9 @@ class DataCollection(SQLModel, table=True): # type: ignore
480486
processing_jobs: List["ProcessingJob"] = Relationship(
481487
back_populates="data_collection", sa_relationship_kwargs={"cascade": "delete"}
482488
)
483-
Movie: List["ProcessingMovie"] = Relationship(back_populates="DataCollection")
489+
movies: List["Movie"] = Relationship(
490+
back_populates="data_collection", sa_relationship_kwargs={"cascade": "delete"}
491+
)
484492
MotionCorrection: List["MotionCorrection"] = Relationship(
485493
back_populates="DataCollection"
486494
)
@@ -639,6 +647,7 @@ class MurfeyLedger(SQLModel, table=True): # type: ignore
639647
class GridSquare(SQLModel, table=True): # type: ignore
640648
id: Optional[int] = Field(primary_key=True, default=None)
641649
session_id: int = Field(foreign_key="session.id")
650+
atlas_id: Optional[int] = Field(foreign_key="data_collection_group.id")
642651
name: int
643652
tag: str
644653
x_location: Optional[float]
@@ -650,6 +659,13 @@ class GridSquare(SQLModel, table=True): # type: ignore
650659
thumbnail_size_x: Optional[int]
651660
thumbnail_size_y: Optional[int]
652661
pixel_size: Optional[float] = None
662+
scaled_pixel_size: Optional[float] = None
663+
pixel_location_x: Optional[int] = None
664+
pixel_location_y: Optional[int] = None
665+
height: Optional[int] = None
666+
width: Optional[int] = None
667+
angle: Optional[float] = None
668+
quality_indicator: Optional[float] = None
653669
image: str = ""
654670
session: Optional[Session] = Relationship(back_populates="grid_squares")
655671
clem_image_series: List["CLEMImageSeries"] = Relationship(
@@ -658,6 +674,9 @@ class GridSquare(SQLModel, table=True): # type: ignore
658674
foil_holes: List["FoilHole"] = Relationship(
659675
back_populates="grid_square", sa_relationship_kwargs={"cascade": "delete"}
660676
)
677+
data_collection_group: Optional["DataCollectionGroup"] = Relationship(
678+
back_populates="grid_squares"
679+
)
661680

662681

663682
class FoilHole(SQLModel, table=True): # type: ignore
@@ -674,6 +693,11 @@ class FoilHole(SQLModel, table=True): # type: ignore
674693
thumbnail_size_x: Optional[int]
675694
thumbnail_size_y: Optional[int]
676695
pixel_size: Optional[float] = None
696+
scaled_pixel_size: Optional[float] = None
697+
pixel_location_x: Optional[int] = None
698+
pixel_location_y: Optional[int] = None
699+
diameter: Optional[int] = None
700+
quality_indicator: Optional[float] = None
677701
image: str = ""
678702
grid_square: Optional[GridSquare] = Relationship(back_populates="foil_holes")
679703
session: Optional[Session] = Relationship(back_populates="foil_holes")
@@ -688,13 +712,21 @@ class FoilHole(SQLModel, table=True): # type: ignore
688712
class SearchMap(SQLModel, table=True): # type: ignore
689713
id: Optional[int] = Field(primary_key=True, default=None)
690714
session_id: int = Field(foreign_key="session.id")
715+
atlasId: Optional[int] = Field(foreign_key="data_collection_group.id")
691716
name: str
692717
tag: str
693718
x_location: Optional[float] = None
694719
y_location: Optional[float] = None
695720
x_stage_position: Optional[float] = None
696721
y_stage_position: Optional[float] = None
697722
pixel_size: Optional[float] = None
723+
scaled_pixel_size: Optional[float] = None
724+
pixel_location_x: Optional[int] = None
725+
pixel_location_y: Optional[int] = None
726+
scaled_height: Optional[int] = None
727+
scaled_width: Optional[int] = None
728+
angle: Optional[float] = None
729+
quality_indicator: Optional[float] = None
698730
image: str = ""
699731
binning: Optional[float] = None
700732
reference_matrix_m11: Optional[float] = None
@@ -715,17 +747,29 @@ class SearchMap(SQLModel, table=True): # type: ignore
715747
tilt_series: List["TiltSeries"] = Relationship(
716748
back_populates="search_map", sa_relationship_kwargs={"cascade": "delete"}
717749
)
750+
data_collection_group: Optional["DataCollectionGroup"] = Relationship(
751+
back_populates="search_maps"
752+
)
753+
Tomogram: List["Tomogram"] = Relationship(back_populates="SearchMap")
718754

719755

720756
class Movie(SQLModel, table=True): # type: ignore
721757
murfey_id: int = Field(primary_key=True, foreign_key="murfeyledger.id")
722758
foil_hole_id: int = Field(foreign_key="foilhole.id", nullable=True, default=None)
759+
data_collection_id: Optional[int] = Field(foreign_key="datacollection.id")
723760
path: str
724761
image_number: int
725762
tag: str
726763
preprocessed: bool = False
764+
createdTimeStamp: Optional[datetime] = None
765+
movie_full_path: Optional[str] = None
727766
murfey_ledger: Optional[MurfeyLedger] = Relationship(back_populates="movies")
728767
foil_hole: Optional[FoilHole] = Relationship(back_populates="movies")
768+
data_collection: Optional["DataCollection"] = Relationship(back_populates="movies")
769+
MotionCorrection: List["MotionCorrection"] = Relationship(back_populates="Movie")
770+
TiltImageAlignment: List["TiltImageAlignment"] = Relationship(
771+
back_populates="Movie"
772+
)
729773

730774

731775
class CtfParameters(SQLModel, table=True): # type: ignore

src/murfey/util/processing_db.py

Lines changed: 6 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -3,76 +3,7 @@
33

44
from sqlmodel import Enum, Field, Relationship, SQLModel
55

6-
from murfey.util.db import AutoProcProgram, DataCollection, DataCollectionGroup
7-
8-
9-
class Atlas(SQLModel, table=True): # type: ignore
10-
atlasId: int = Field(primary_key=True, unique=True)
11-
dataCollectionGroupId: int = Field(foreign_key="DataCollectionGroup.id")
12-
atlasImage: str
13-
pixelSize: float
14-
cassetteSlot: Optional[int] = None
15-
DataCollectionGroup: Optional["DataCollectionGroup"] = Relationship(
16-
back_populates="Atlas"
17-
)
18-
GridSquare: List["GridSquare"] = Relationship(back_populates="Atlas")
19-
20-
21-
class GridSquare(SQLModel, table=True): # type: ignore
22-
gridSquareId: int = Field(primary_key=True, unique=True)
23-
atlasId: int = Field(foreign_key="Atlas.atlasId")
24-
gridSquareLabel: Optional[int] = None
25-
gridSquareImage: Optional[str] = None
26-
pixelLocationX: Optional[int] = None
27-
pixelLocationY: Optional[int] = None
28-
height: Optional[int] = None
29-
width: Optional[int] = None
30-
angle: Optional[float] = None
31-
stageLocationX: Optional[float] = None
32-
stageLocationY: Optional[float] = None
33-
qualityIndicator: Optional[float] = None
34-
pixelSize: Optional[float] = None
35-
Atlas: Optional["Atlas"] = Relationship(back_populates="Atlas")
36-
FoilHole: List["FoilHole"] = Relationship(back_populates="GridSquare")
37-
Tomogram: List["Tomogram"] = Relationship(back_populates="GridSquare")
38-
39-
40-
class FoilHole(SQLModel, table=True): # type: ignore
41-
foilHoleId: int = Field(primary_key=True, unique=True)
42-
gridSquareId: int = Field(foreign_key="GridSquare.gridSquareId")
43-
foilHoleLabel: str
44-
foilHoleImage: Optional[str] = None
45-
pixelLocationX: Optional[int] = None
46-
pixelLocationY: Optional[int] = None
47-
diameter: Optional[int] = None
48-
stageLocationX: Optional[float] = None
49-
stageLocationY: Optional[float] = None
50-
qualityIndicator: Optional[float] = None
51-
pixelSize: Optional[float] = None
52-
GridSquare: Optional["GridSquare"] = Relationship(back_populates="FoilHole")
53-
Movie: List["Movie"] = Relationship(back_populates="FoilHole")
54-
55-
56-
class Movie(SQLModel, table=True): # type: ignore
57-
movieId: int = Field(primary_key=True, unique=True)
58-
createdTimeStamp: datetime.datetime
59-
dataCollectionId: Optional[int] = Field(foreign_key="DataCollection.id")
60-
movieNumber: Optional[int] = None
61-
movieFullPath: Optional[str] = None
62-
positionX: Optional[float] = None
63-
positionY: Optional[float] = None
64-
nominalDefocus: Optional[float] = None
65-
angle: Optional[float] = None
66-
fluence: Optional[float] = None
67-
numberOfFrames: Optional[int] = None
68-
foilHoleId: Optional[int] = Field(foreign_key="FoilHole.foilHoleId")
69-
templateLabel: Optional[int] = None
70-
DataCollection: Optional["DataCollection"] = Relationship(back_populates="Movie")
71-
FoilHole: Optional["FoilHole"] = Relationship(back_populates="Movie")
72-
MotionCorrection: List["MotionCorrection"] = Relationship(back_populates="Movie")
73-
TiltImageAlignment: List["TiltImageAlignment"] = Relationship(
74-
back_populates="Movie"
75-
)
6+
from murfey.util.db import AutoProcProgram, DataCollection, Movie, SearchMap
767

778

789
class MotionCorrection(SQLModel, table=True): # type: ignore
@@ -134,14 +65,14 @@ class Tomogram(SQLModel, table=True): # type: ignore
13465
projXZ: Optional[str] = None
13566
recordTimeStamp: Optional[datetime.datetime] = None
13667
globalAlignmentQuality: Optional[float] = None
137-
gridSquareId: Optional[int] = Field(foreign_key="GridSquare.gridSquareId")
68+
gridSquareId: Optional[int] = Field(foreign_key="SearchMap.id")
13869
pixelLocationX: Optional[int] = None
13970
pixelLocationY: Optional[int] = None
14071
AutoProcProgram: Optional["AutoProcProgram"] = Relationship(
14172
back_populates="Tomogram"
14273
)
14374
DataCollection: Optional["DataCollection"] = Relationship(back_populates="Tomogram")
144-
GridSquare: Optional["GridSquare"] = Relationship(back_populates="Tomogram")
75+
SearchMap: Optional["SearchMap"] = Relationship(back_populates="Tomogram")
14576
ProcessedTomogram: List["ProcessedTomogram"] = Relationship(
14677
back_populates="Tomogram"
14778
)
@@ -309,6 +240,9 @@ class BFactorFit(SQLModel, table=True): # type: ignore
309240

310241
class CryoemInitialModel(SQLModel, table=True): # type: ignore
311242
cryoemInitialModelId: int = Field(primary_key=True, unique=True)
243+
particleClassificationId: int = Field(
244+
foreign_key="ParticleClassification.particleClassificationId"
245+
)
312246
resolution: Optional[float] = None
313247
numberOfParticles: Optional[int] = None
314248
ParticleClassification: List["ParticleClassification"] = Relationship(

0 commit comments

Comments
 (0)