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

1"""Module for SPT-100 datasets.""" 

2 

3from importlib import resources 

4from pathlib import Path 

5 

6from .. import ThrusterDataset 

7 

8 

9class SPT100(ThrusterDataset): 

10 """Class for handling the SPT-100 datasets.""" 

11 

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.") 

27 

28 return data_list 

29 

30 @staticmethod 

31 def all_data() -> list[Path]: 

32 return _sankovic1993() + _macdonald2019() + _diamant2014() + _express2001() 

33 

34 

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 

38 

39 dir = resources.files(diamant2014) 

40 

41 if datasets is None: 

42 datasets = ["L3", "aerospace"] 

43 elif isinstance(datasets, str): 

44 datasets = [datasets] 

45 

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) 

50 

51 return data_paths 

52 

53 

54def _macdonald2019() -> list[Path]: 

55 """See https://doi.org/10.2514/1.B37133""" 

56 from . import macdonald2019 

57 

58 dir = resources.files(macdonald2019) 

59 with resources.as_file(dir / "data.csv") as path: 

60 return [path] 

61 

62 

63def _sankovic1993() -> list[Path]: 

64 """See https://api.semanticscholar.org/CorpusID:108473052""" 

65 from . import sankovic1993 

66 

67 dir = resources.files(sankovic1993) 

68 with resources.as_file(dir / "data.csv") as path: 

69 return [path] 

70 

71 

72def _express2001() -> list[Path]: 

73 """See https://ntrs.nasa.gov/api/citations/20020014412/downloads/20020014412.pdf""" 

74 from . import express2001 

75 

76 dir = resources.files(express2001) 

77 with resources.as_file(dir / "data.csv") as path: 

78 return [path]