Raw Scan Load Sequence Diagram
Main Flow
sequenceDiagram
participant EventBroker
participant ProjectModel
participant RawScanLoadController
participant FileStore
participant RawScanClassifier
participant LoaderRegistry
participant ORNLSpiceLoader
LoaderRegistry ->> LoaderRegistry: init(FileStore)
ORNLSpiceLoader -->> LoaderRegistry: is registered via main
LoaderRegistry ->> LoaderRegistry: init loader instance with appropriate FileStore
ProjectModel ->>+RawScanLoadController: load raw scans (path)
RawScanLoadController ->>FileStore: get files(s) at (path)
FileStore ->>FileStore: validate file on disk
FileStore -->> RawScanLoadController: Absolute File Paths(s)
loop foreach File
RawScanLoadController ->> RawScanClassifier: classify input schema
RawScanClassifier ->> LoaderRegistry: getLoaders
loop foreach Loader:
RawScanClassifier ->> ORNLSpiceLoader: getScore(str path)
RawScanClassifier ->> RawScanClassifier: update best score
end
RawScanClassifier -->> RawScanLoadController: (ORNL SPICE) stubbed
RawScanLoadController ->> LoaderRegistry: buildLoader(classification, DataService)
LoaderRegistry -->> RawScanLoadController: ORNLSpiceLoader
RawScanLoadController ->> ORNLSpiceLoader: load(raw scan file (handler?))
ORNLSpiceLoader ->> ORNLSpiceLoader: setup
ORNLSpiceLoader ->> ORNLSpiceLoader: parse metadata
ORNLSpiceLoader ->> ORNLSpiceLoader: parse ub
ORNLSpiceLoader ->> ORNLSpiceLoader: parse scan values
ORNLSpiceLoader ->> FileStore: fetch external metadata files
FileStore -->> ORNLSpiceLoader: return external metadata or None
ORNLSpiceLoader ->> ORNLSpiceLoader: parse external metadata
ORNLSpiceLoader ->> ORNLSpiceLoader: adapt parsed data into RawScan
ORNLSpiceLoader -->> RawScanLoadController: RawScan
RawScanLoadController ->>RawScanLoadController: append to result List
end
RawScanLoadController -->>ProjectModel: List[RawScan]
ProjectModel ->> ProjectModel : update TaviData.scans
ProjectModel ->> EventBroker : emit RawScanListUpdateEvent
Classification Flow
sequenceDiagram
participant RawScanLoadController
participant RawScanClassifier
participant LoaderRegistry
participant Loader
participant ORNLSpiceLoader
participant RuleBasedClassifier
participant RuleSet
participant Rule
ORNLSpiceLoader ->> LoaderRegistry: Register with Registry via main
LoaderRegistry ->> LoaderRegistry: Init loaders with appropriate FileStore
loop foreach File
RawScanLoadController ->> RawScanClassifier: classify input schema
RawScanClassifier ->> LoaderRegistry : get loaders
loop foreach Loader
RawScanClassifier ->> Loader: generate classification score
Loader ->> ORNLSpiceLoader: get score
ORNLSpiceLoader ->> RuleBasedClassifier : get score
loop foreach Rule in RuleSet
RuleBasedClassifier ->> Rule: does this match?
Rule -->> RuleBasedClassifier: result
RuleBasedClassifier ->> RuleBasedClassifier: append to results List
end
RuleBasedClassifier ->> RuleBasedClassifier: Calculate score
RuleBasedClassifier -->> ORNLSpiceLoader: score
ORNLSpiceLoader -->> RawScanClassifier: score
end
RawScanClassifier ->> RawScanClassifier:return best match
RawScanClassifier -->> RawScanLoadController: (ORNL SPICE) stubbed
RawScanLoadController ->>RawScanLoadController: ...
RawScanLoadController ->>RawScanLoadController: append to result List
RawScanLoadController ->>RawScanLoadController: append to result List
end
Disk Access Flow
sequenceDiagram
participant RawScanLoadController
participant DiskServiceInterface
participant LocalDiskService
RawScanLoadController ->>LocalDiskService: get scan(s) at (path)
LocalDiskService ->>pathlib: get list of ALL files @ path from disk
loop foreach filepath
LocalDiskService ->> LocalDiskService: get file size(path)
LocalDiskService ->> pathlib:.stat()
pathlib -->> LocalDiskService : filesize
alt 0 < filesize < threshold
LocalDiskService ->>LocalDiskService: skip
else
LocalDiskService ->>LocalDiskService: append to result list
end
end
LocalDiskService -->> RawScanLoadController: List[str]