Skip to content

Commit 86c3f74

Browse files
committed
Genericize Brnich style ranges into base class, inherit investigator ranges from Brnich ranges
1 parent 2ac0aaa commit 86c3f74

File tree

3 files changed

+307
-70
lines changed

3 files changed

+307
-70
lines changed

src/mavedb/view_models/score_range.py

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -161,48 +161,46 @@ class ScoreRanges(SavedScoreRanges):
161161

162162

163163
##############################################################################################################
164-
# Investigator provided score range models
164+
# Brnich style score range models
165165
##############################################################################################################
166166

167-
### Investigator provided score range model
168-
169167

170-
class InvestigatorScoreRangeBase(ScoreRangeBase):
168+
class BrnichScoreRangeBase(ScoreRangeBase):
171169
odds_path: Optional[OddsPathBase] = None
172170

173171

174-
class InvestigatorScoreRangeModify(ScoreRangeModify, InvestigatorScoreRangeBase):
172+
class BrnichScoreRangeModify(ScoreRangeModify, BrnichScoreRangeBase):
175173
odds_path: Optional[OddsPathModify] = None
176174

177175

178-
class InvestigatorScoreRangeCreate(ScoreRangeCreate, InvestigatorScoreRangeModify):
176+
class BrnichScoreRangeCreate(ScoreRangeCreate, BrnichScoreRangeModify):
179177
odds_path: Optional[OddsPathCreate] = None
180178

181179

182-
class SavedInvestigatorScoreRange(SavedScoreRange, InvestigatorScoreRangeBase):
180+
class SavedBrnichScoreRange(SavedScoreRange, BrnichScoreRangeBase):
183181
record_type: str = None # type: ignore
184182

185183
odds_path: Optional[SavedOddsPath] = None
186184

187185
_record_type_factory = record_type_validator()(set_record_type)
188186

189187

190-
class InvestigatorScoreRange(ScoreRange, SavedInvestigatorScoreRange):
188+
class BrnichScoreRange(ScoreRange, SavedBrnichScoreRange):
191189
odds_path: Optional[OddsPath] = None
192190

193191

194-
### Investigator provided score range wrapper model
192+
### Brnich score range wrapper model
195193

196194

197-
class InvestigatorScoreRangesBase(ScoreRangesBase):
198-
title: str = "Investigator-provided functional classes"
195+
class BrnichScoreRangesBase(ScoreRangesBase):
196+
title: str = "Brnich functional classes"
199197
baseline_score: Optional[float] = None
200198
baseline_score_description: Optional[str] = None
201-
ranges: Sequence[InvestigatorScoreRangeBase]
199+
ranges: Sequence[BrnichScoreRangeBase]
202200
odds_path_source: Optional[Sequence[PublicationIdentifierBase]] = None
203201

204202
@model_validator(mode="after")
205-
def validate_baseline_score(self: "InvestigatorScoreRangesBase") -> "InvestigatorScoreRangesBase":
203+
def validate_baseline_score(self: "BrnichScoreRangesBase") -> "BrnichScoreRangesBase":
206204
ranges = getattr(self, "ranges", []) or []
207205
baseline_score = getattr(self, "baseline_score", None)
208206

@@ -229,25 +227,52 @@ def validate_baseline_score(self: "InvestigatorScoreRangesBase") -> "Investigato
229227
)
230228

231229

232-
class InvestigatorScoreRangesModify(ScoreRangesModify, InvestigatorScoreRangesBase):
233-
ranges: Sequence[InvestigatorScoreRangeModify]
230+
class BrnichScoreRangesModify(ScoreRangesModify, BrnichScoreRangesBase):
231+
ranges: Sequence[BrnichScoreRangeModify]
234232
odds_path_source: Optional[Sequence[PublicationIdentifierCreate]] = None
235233

236234

237-
class InvestigatorScoreRangesCreate(ScoreRangesCreate, InvestigatorScoreRangesModify):
238-
ranges: Sequence[InvestigatorScoreRangeCreate]
235+
class BrnichScoreRangesCreate(ScoreRangesCreate, BrnichScoreRangesModify):
236+
ranges: Sequence[BrnichScoreRangeCreate]
239237

240238

241-
class SavedInvestigatorScoreRanges(SavedScoreRanges, InvestigatorScoreRangesBase):
239+
class SavedBrnichScoreRanges(SavedScoreRanges, BrnichScoreRangesBase):
242240
record_type: str = None # type: ignore
243241

244-
ranges: Sequence[SavedInvestigatorScoreRange]
242+
ranges: Sequence[SavedBrnichScoreRange]
245243

246244
_record_type_factory = record_type_validator()(set_record_type)
247245

248246

249-
class InvestigatorScoreRanges(ScoreRanges, SavedInvestigatorScoreRanges):
250-
ranges: Sequence[InvestigatorScoreRange]
247+
class BrnichScoreRanges(ScoreRanges, SavedBrnichScoreRanges):
248+
ranges: Sequence[BrnichScoreRange]
249+
250+
251+
##############################################################################################################
252+
# Investigator provided score range models
253+
##############################################################################################################
254+
255+
256+
class InvestigatorScoreRangesBase(BrnichScoreRangesBase):
257+
title: str = "Investigator-provided functional classes"
258+
259+
260+
class InvestigatorScoreRangesModify(BrnichScoreRangesModify, InvestigatorScoreRangesBase):
261+
pass
262+
263+
264+
class InvestigatorScoreRangesCreate(BrnichScoreRangesCreate, InvestigatorScoreRangesModify):
265+
pass
266+
267+
268+
class SavedInvestigatorScoreRanges(SavedBrnichScoreRanges, InvestigatorScoreRangesBase):
269+
record_type: str = None # type: ignore
270+
271+
_record_type_factory = record_type_validator()(set_record_type)
272+
273+
274+
class InvestigatorScoreRanges(BrnichScoreRanges, SavedInvestigatorScoreRanges):
275+
pass
251276

252277

253278
##############################################################################################################

tests/helpers/constants.py

Lines changed: 173 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,164 @@
16181618
}
16191619

16201620

1621+
TEST_BRNICH_SCORE_SET_NORMAL_RANGE = {
1622+
**TEST_SCORE_SET_NORMAL_RANGE,
1623+
"odds_path": TEST_BS3_ODDS_PATH,
1624+
}
1625+
1626+
1627+
TEST_SAVED_BRNICH_SCORE_SET_NORMAL_RANGE = {
1628+
**TEST_SAVED_SCORE_SET_NORMAL_RANGE,
1629+
"oddsPath": TEST_SAVED_BS3_ODDS_PATH,
1630+
"recordType": "BrnichScoreRange",
1631+
}
1632+
1633+
1634+
TEST_BRNICH_SCORE_SET_ABNORMAL_RANGE = {
1635+
**TEST_SCORE_SET_ABNORMAL_RANGE,
1636+
"odds_path": TEST_PS3_ODDS_PATH,
1637+
}
1638+
1639+
1640+
TEST_SAVED_BRNICH_SCORE_SET_ABNORMAL_RANGE = {
1641+
**TEST_SAVED_SCORE_SET_ABNORMAL_RANGE,
1642+
"oddsPath": TEST_SAVED_PS3_ODDS_PATH,
1643+
"recordType": "BrnichScoreRange",
1644+
}
1645+
1646+
1647+
TEST_BRNICH_SCORE_SET_NOT_SPECIFIED_RANGE = {
1648+
**TEST_SCORE_SET_NOT_SPECIFIED_RANGE,
1649+
"odds_path": TEST_PS3_ODDS_PATH,
1650+
}
1651+
1652+
1653+
TEST_SAVED_BRNICH_SCORE_SET_NOT_SPECIFIED_RANGE = {
1654+
**TEST_SAVED_SCORE_SET_NOT_SPECIFIED_RANGE,
1655+
"oddsPath": TEST_SAVED_PS3_ODDS_PATH,
1656+
"recordType": "BrnichScoreRange",
1657+
}
1658+
1659+
1660+
TEST_BRNICH_SCORE_SET_RANGE = {
1661+
"baseline_score": TEST_BASELINE_SCORE,
1662+
"ranges": [
1663+
TEST_BRNICH_SCORE_SET_NORMAL_RANGE,
1664+
TEST_BRNICH_SCORE_SET_ABNORMAL_RANGE,
1665+
TEST_BRNICH_SCORE_SET_NOT_SPECIFIED_RANGE,
1666+
],
1667+
"research_use_only": False,
1668+
"title": "Test Brnich Functional Ranges",
1669+
"odds_path_source": [{"identifier": TEST_PUBMED_IDENTIFIER, "db_name": "PubMed"}],
1670+
"source": None,
1671+
}
1672+
1673+
1674+
TEST_SAVED_BRNICH_SCORE_SET_RANGE = {
1675+
"recordType": "BrnichScoreRanges",
1676+
"baselineScore": TEST_BASELINE_SCORE,
1677+
"ranges": [
1678+
TEST_SAVED_BRNICH_SCORE_SET_NORMAL_RANGE,
1679+
TEST_SAVED_BRNICH_SCORE_SET_ABNORMAL_RANGE,
1680+
TEST_SAVED_BRNICH_SCORE_SET_NOT_SPECIFIED_RANGE,
1681+
],
1682+
"researchUseOnly": False,
1683+
"title": "Test Brnich Functional Ranges",
1684+
"oddsPathSource": [{"identifier": TEST_PUBMED_IDENTIFIER, "dbName": "PubMed"}],
1685+
"source": None,
1686+
}
1687+
1688+
1689+
TEST_BRNICH_SCORE_SET_RANGE_WITH_SOURCE = {
1690+
**TEST_BRNICH_SCORE_SET_RANGE,
1691+
"source": [{"identifier": TEST_PUBMED_IDENTIFIER, "db_name": "PubMed"}],
1692+
}
1693+
1694+
1695+
TEST_SAVED_BRNICH_SCORE_SET_RANGE_WITH_SOURCE = {
1696+
**TEST_SAVED_BRNICH_SCORE_SET_RANGE,
1697+
"source": [{"identifier": TEST_PUBMED_IDENTIFIER, "dbName": "PubMed"}],
1698+
}
1699+
1700+
TEST_SCOTT_SCORE_SET_NORMAL_RANGE = {
1701+
**TEST_SCORE_SET_NORMAL_RANGE,
1702+
"odds_path": TEST_BS3_ODDS_PATH,
1703+
}
1704+
1705+
1706+
TEST_SAVED_SCOTT_SCORE_SET_NORMAL_RANGE = {
1707+
**TEST_SAVED_SCORE_SET_NORMAL_RANGE,
1708+
"oddsPath": TEST_SAVED_BS3_ODDS_PATH,
1709+
"recordType": "BrnichScoreRange",
1710+
}
1711+
1712+
1713+
TEST_SCOTT_SCORE_SET_ABNORMAL_RANGE = {
1714+
**TEST_SCORE_SET_ABNORMAL_RANGE,
1715+
"odds_path": TEST_PS3_ODDS_PATH,
1716+
}
1717+
1718+
1719+
TEST_SAVED_SCOTT_SCORE_SET_ABNORMAL_RANGE = {
1720+
**TEST_SAVED_SCORE_SET_ABNORMAL_RANGE,
1721+
"oddsPath": TEST_SAVED_PS3_ODDS_PATH,
1722+
"recordType": "BrnichScoreRange",
1723+
}
1724+
1725+
1726+
TEST_SCOTT_SCORE_SET_NOT_SPECIFIED_RANGE = {
1727+
**TEST_SCORE_SET_NOT_SPECIFIED_RANGE,
1728+
"odds_path": TEST_PS3_ODDS_PATH,
1729+
}
1730+
1731+
1732+
TEST_SAVED_SCOTT_SCORE_SET_NOT_SPECIFIED_RANGE = {
1733+
**TEST_SAVED_SCORE_SET_NOT_SPECIFIED_RANGE,
1734+
"oddsPath": TEST_SAVED_PS3_ODDS_PATH,
1735+
"recordType": "BrnichScoreRange",
1736+
}
1737+
1738+
1739+
TEST_SCOTT_SCORE_SET_RANGE = {
1740+
"baseline_score": TEST_BASELINE_SCORE,
1741+
"ranges": [
1742+
TEST_SCOTT_SCORE_SET_NORMAL_RANGE,
1743+
TEST_SCOTT_SCORE_SET_ABNORMAL_RANGE,
1744+
TEST_SCOTT_SCORE_SET_NOT_SPECIFIED_RANGE,
1745+
],
1746+
"research_use_only": False,
1747+
"title": "Test Scott Functional Ranges",
1748+
"odds_path_source": [{"identifier": TEST_PUBMED_IDENTIFIER, "db_name": "PubMed"}],
1749+
"source": None,
1750+
}
1751+
1752+
1753+
TEST_SAVED_SCOTT_SCORE_SET_RANGE = {
1754+
"recordType": "ScottScoreRanges",
1755+
"baselineScore": TEST_BASELINE_SCORE,
1756+
"ranges": [
1757+
TEST_SAVED_SCOTT_SCORE_SET_NORMAL_RANGE,
1758+
TEST_SAVED_SCOTT_SCORE_SET_ABNORMAL_RANGE,
1759+
TEST_SAVED_SCOTT_SCORE_SET_NOT_SPECIFIED_RANGE,
1760+
],
1761+
"researchUseOnly": False,
1762+
"title": "Test Scott Functional Ranges",
1763+
"oddsPathSource": [{"identifier": TEST_PUBMED_IDENTIFIER, "dbName": "PubMed"}],
1764+
"source": None,
1765+
}
1766+
1767+
1768+
TEST_SCOTT_SCORE_SET_RANGE_WITH_SOURCE = {
1769+
**TEST_SCOTT_SCORE_SET_RANGE,
1770+
"source": [{"identifier": TEST_PUBMED_IDENTIFIER, "db_name": "PubMed"}],
1771+
}
1772+
1773+
1774+
TEST_SAVED_SCOTT_SCORE_SET_RANGE_WITH_SOURCE = {
1775+
**TEST_SAVED_SCOTT_SCORE_SET_RANGE,
1776+
"source": [{"identifier": TEST_PUBMED_IDENTIFIER, "dbName": "PubMed"}],
1777+
}
1778+
16211779
TEST_INVESTIGATOR_PROVIDED_SCORE_SET_NORMAL_RANGE = {
16221780
**TEST_SCORE_SET_NORMAL_RANGE,
16231781
"odds_path": TEST_BS3_ODDS_PATH,
@@ -1627,7 +1785,7 @@
16271785
TEST_SAVED_INVESTIGATOR_PROVIDED_SCORE_SET_NORMAL_RANGE = {
16281786
**TEST_SAVED_SCORE_SET_NORMAL_RANGE,
16291787
"oddsPath": TEST_SAVED_BS3_ODDS_PATH,
1630-
"recordType": "InvestigatorScoreRange",
1788+
"recordType": "BrnichScoreRange",
16311789
}
16321790

16331791

@@ -1640,7 +1798,7 @@
16401798
TEST_SAVED_INVESTIGATOR_PROVIDED_SCORE_SET_ABNORMAL_RANGE = {
16411799
**TEST_SAVED_SCORE_SET_ABNORMAL_RANGE,
16421800
"oddsPath": TEST_SAVED_PS3_ODDS_PATH,
1643-
"recordType": "InvestigatorScoreRange",
1801+
"recordType": "BrnichScoreRange",
16441802
}
16451803

16461804

@@ -1653,7 +1811,7 @@
16531811
TEST_SAVED_INVESTIGATOR_PROVIDED_SCORE_SET_NOT_SPECIFIED_RANGE = {
16541812
**TEST_SAVED_SCORE_SET_NOT_SPECIFIED_RANGE,
16551813
"oddsPath": TEST_SAVED_PS3_ODDS_PATH,
1656-
"recordType": "InvestigatorScoreRange",
1814+
"recordType": "BrnichScoreRange",
16571815
}
16581816

16591817

@@ -1927,6 +2085,16 @@
19272085
"investigatorProvided": TEST_SAVED_INVESTIGATOR_PROVIDED_SCORE_SET_RANGE_WITH_SOURCE,
19282086
}
19292087

2088+
TEST_SCORE_SET_RANGES_ONLY_SCOTT = {
2089+
"scott_calibration": TEST_SCOTT_SCORE_SET_RANGE_WITH_SOURCE,
2090+
}
2091+
2092+
2093+
TEST_SAVED_SCORE_SET_RANGES_ONLY_SCOTT = {
2094+
"recordType": "ScoreSetRanges",
2095+
"scottCalibration": TEST_SAVED_SCOTT_SCORE_SET_RANGE_WITH_SOURCE,
2096+
}
2097+
19302098

19312099
TEST_SCORE_SET_RANGES_ONLY_ZEIBERG_CALIBRATION = {
19322100
"zeiberg_calibration": TEST_ZEIBERG_CALIBRATION_SCORE_SET_RANGE_WITH_SOURCE,
@@ -1941,12 +2109,14 @@
19412109

19422110
TEST_SCORE_SET_RANGES_ALL_SCHEMAS_PRESENT = {
19432111
**TEST_SCORE_SET_RANGES_ONLY_INVESTIGATOR_PROVIDED,
2112+
**TEST_SCORE_SET_RANGES_ONLY_SCOTT,
19442113
**TEST_SCORE_SET_RANGES_ONLY_ZEIBERG_CALIBRATION,
19452114
}
19462115

19472116

19482117
TEST_SAVED_SCORE_SET_RANGES_ALL_SCHEMAS_PRESENT = {
19492118
**TEST_SAVED_SCORE_SET_RANGES_ONLY_INVESTIGATOR_PROVIDED,
2119+
**TEST_SAVED_SCORE_SET_RANGES_ONLY_SCOTT,
19502120
**TEST_SAVED_SCORE_SET_RANGES_ONLY_ZEIBERG_CALIBRATION,
19512121
}
19522122

0 commit comments

Comments
 (0)