Coverage for src/hallmd/data/spt100/__init__.py: 62%
50 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-07-10 23:12 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2025-07-10 23:12 +0000
1"""Module for SPT-100 datasets."""
3from importlib import resources
4from pathlib import Path
6from .. import ThrusterDataset
9class SPT100(ThrusterDataset):
10 """Class for handling the SPT-100 datasets."""
12 @staticmethod
13 def datasets_from_names(dataset_names: list[str]) -> list[Path]:
14 data_list = []
15 for dataset in dataset_names:
16 match dataset:
17 case "diamant2014":
18 data_list += _diamant2014()
19 case "sankovic1993":
20 data_list += _sankovic1993()
21 case "macdonald2019":
22 data_list += _macdonald2019()
23 case "express2001":
24 data_list += _express2001()
25 case _:
26 raise ValueError(f"Invalid dataset {dataset} selected.")
28 return data_list
30 @staticmethod
31 def all_data() -> list[Path]:
32 return _sankovic1993() + _macdonald2019() + _diamant2014() + _express2001()
35def _diamant2014(datasets: list[str] | str | None = None) -> list[Path]:
36 """See https://doi.org/10.2514/6.2014-3710 and https://doi.org/10.1088/1361-6595/abd3b6"""
37 from . import diamant2014
39 dir = resources.files(diamant2014)
41 if datasets is None:
42 datasets = ["L3", "aerospace"]
43 elif isinstance(datasets, str):
44 datasets = [datasets]
46 data_paths: list[Path] = []
47 for set in datasets:
48 with resources.as_file(dir / f"data_{set}.csv") as path:
49 data_paths.append(path)
51 return data_paths
54def _macdonald2019() -> list[Path]:
55 """See https://doi.org/10.2514/1.B37133"""
56 from . import macdonald2019
58 dir = resources.files(macdonald2019)
59 with resources.as_file(dir / "data.csv") as path:
60 return [path]
63def _sankovic1993() -> list[Path]:
64 """See https://api.semanticscholar.org/CorpusID:108473052"""
65 from . import sankovic1993
67 dir = resources.files(sankovic1993)
68 with resources.as_file(dir / "data.csv") as path:
69 return [path]
72def _express2001() -> list[Path]:
73 """See https://ntrs.nasa.gov/api/citations/20020014412/downloads/20020014412.pdf"""
74 from . import express2001
76 dir = resources.files(express2001)
77 with resources.as_file(dir / "data.csv") as path:
78 return [path]