22
33from dataclasses import dataclass
44from pathlib import Path
5+ from textwrap import shorten
56from typing import Union
67
78import orsopy
9+ import prettytable
810from orsopy .fileio import load_orso
911
1012from RATapi import ClassList
@@ -25,8 +27,36 @@ class ORSOProject:
2527
2628 def __init__ (self , filepath : Union [str , Path ], absorption : bool = False ):
2729 ort_data = load_orso (filepath )
28- self .data = [Data (name = dataset .info .data_source .sample .name , data = dataset .data ) for dataset in ort_data ]
29- self .samples = [orso_model_to_rat (dataset .info .data_source .sample .model ) for dataset in ort_data ]
30+ self .data = ClassList (
31+ [Data (name = dataset .info .data_source .sample .name , data = dataset .data ) for dataset in ort_data ]
32+ )
33+ self .samples = [
34+ orso_model_to_rat (dataset .info .data_source .sample .model , absorption = absorption ) for dataset in ort_data
35+ ]
36+
37+ def __str__ (self ):
38+ data_str = f"Data:\n { str (self .data )} \n \n "
39+ if len (self .samples ) == 1 :
40+ samples_str = f"Sample:\n { str (self .samples [0 ])} "
41+ else :
42+ table = prettytable .PrettyTable ()
43+ table .field_names = ["index" , "bulk in" , "bulk out" , "parameters" , "layers" , "model" ]
44+ for index , sample in enumerate (self .samples ):
45+ if sample is None :
46+ row = [index , "" , "" , "" , "" , "" ]
47+ else :
48+ row = [
49+ index ,
50+ sample .bulk_in .name ,
51+ sample .bulk_out .name ,
52+ shorten (", " .join ([p .name for p in sample .parameters ]), width = 20 , placeholder = "..." ),
53+ shorten (", " .join ([layer .name for layer in sample .layers ]), width = 20 , placeholder = "..." ),
54+ shorten (str (sample .model ), width = 20 , placeholder = "..." ),
55+ ]
56+ table .add_row (row )
57+ samples_str = table .get_string ()
58+
59+ return data_str + samples_str
3060
3161
3262@dataclass
@@ -39,6 +69,20 @@ class ORSOSample:
3969 layers : Union [ClassList [Layer ], ClassList [AbsorptionLayer ]]
4070 model : list [str ]
4171
72+ def __str__ (self ):
73+ return (
74+ "Bulk in:\n "
75+ f"{ str (self .bulk_in )} \n \n "
76+ "Bulk out:\n "
77+ f"{ str (self .bulk_out )} \n \n "
78+ "Parameters:\n "
79+ f"{ str (self .parameters )} \n \n "
80+ "Layers:\n "
81+ f"{ str (self .layers )} \n \n "
82+ "Model:\n "
83+ f"{ self .model } "
84+ )
85+
4286
4387def orso_model_to_rat (
4488 model : Union [orsopy .fileio .model_language .SampleModel , str ], absorption : bool = False
0 commit comments