Mercurial > repos > muon-spectroscopy-computational-project > larch_select_paths
comparison larch_select_paths.py @ 4:204c4afe2f1e draft default tip
planemo upload for repository https://github.com/MaterialsGalaxy/larch-tools/tree/main/larch_select_paths commit 4814f53888643f1d3667789050914675fffb7d59
| author | muon-spectroscopy-computational-project |
|---|---|
| date | Fri, 23 Aug 2024 14:10:59 +0000 |
| parents | 7fdca938d90c |
| children |
comparison
equal
deleted
inserted
replaced
| 3:1d08395c1a9f | 4:204c4afe2f1e |
|---|---|
| 56 | 56 |
| 57 | 57 |
| 58 class GDSWriter: | 58 class GDSWriter: |
| 59 def __init__(self, default_variables: "dict[str, dict]"): | 59 def __init__(self, default_variables: "dict[str, dict]"): |
| 60 self.default_properties = { | 60 self.default_properties = { |
| 61 "degen": {"name": "degen"}, | |
| 61 "s02": {"name": "s02"}, | 62 "s02": {"name": "s02"}, |
| 62 "e0": {"name": "e0"}, | 63 "e0": {"name": "e0"}, |
| 63 "deltar": {"name": "alpha*reff"}, | 64 "deltar": {"name": "alpha"}, |
| 64 "sigma2": {"name": "sigma2"}, | 65 "sigma2": {"name": "sigma2"}, |
| 65 } | 66 } |
| 66 self.rows = [ | 67 self.rows = [ |
| 67 f"{'id':>4s}, {'name':>24s}, {'value':>5s}, {'expr':>4s}, " | 68 f"{'id':>4s}, {'name':>24s}, {'value':>5s}, {'expr':>4s}, " |
| 68 f"{'vary':>4s}\n" | 69 f"{'vary':>4s}\n" |
| 111 | 112 |
| 112 if formatted_name in self.names: | 113 if formatted_name in self.names: |
| 113 raise ValueError(f"{formatted_name} already used as variable name") | 114 raise ValueError(f"{formatted_name} already used as variable name") |
| 114 self.names.add(formatted_name) | 115 self.names.add(formatted_name) |
| 115 | 116 |
| 117 if value is not None: | |
| 118 formatted_value = str(value) | |
| 119 else: | |
| 120 formatted_value = "" | |
| 121 | |
| 116 self.rows.append( | 122 self.rows.append( |
| 117 f"{len(self.rows):4d}, {formatted_name:>24s}, {str(value):>5s}, " | 123 f"{len(self.rows):4d}, {formatted_name:>24s}, " |
| 118 f"{expr:>4s}, {str(vary):>4s}\n" | 124 f"{formatted_value:>5s}, {expr:>4s}, {str(vary):>4s}\n" |
| 119 ) | 125 ) |
| 120 | 126 |
| 121 def parse_gds( | 127 def parse_gds( |
| 122 self, | 128 self, |
| 123 property_name: str, | 129 property_name: str, |
| 177 | 183 |
| 178 | 184 |
| 179 class PathsWriter: | 185 class PathsWriter: |
| 180 def __init__(self, default_variables: "dict[str, dict]"): | 186 def __init__(self, default_variables: "dict[str, dict]"): |
| 181 self.rows = [ | 187 self.rows = [ |
| 182 f"{'id':>4s}, {'filename':>24s}, {'label':>24s}, {'s02':>3s}, " | 188 f"{'id':>4s}, {'filename':>24s}, {'label':>24s}, {'degen':>5s}, " |
| 183 f"{'e0':>4s}, {'sigma2':>24s}, {'deltar':>10s}\n" | 189 f"{'s02':>3s}, {'e0':>4s}, {'sigma2':>24s}, {'deltar':>10s}\n" |
| 184 ] | 190 ] |
| 185 self.gds_writer = GDSWriter(default_variables=default_variables) | 191 self.gds_writer = GDSWriter(default_variables=default_variables) |
| 186 self.all_combinations = [[0]] # 0 corresponds to the header row | 192 self.all_combinations = [[0]] # 0 corresponds to the header row |
| 187 | 193 |
| 188 def parse_feff_output( | 194 def parse_feff_output( |
| 321 def parse_selected_path( | 327 def parse_selected_path( |
| 322 self, | 328 self, |
| 323 filename: str, | 329 filename: str, |
| 324 path_label: str, | 330 path_label: str, |
| 325 directory_label: str = "", | 331 directory_label: str = "", |
| 332 degen: str = "degen", | |
| 326 s02: str = "s02", | 333 s02: str = "s02", |
| 327 e0: str = "e0", | 334 e0: str = "e0", |
| 328 sigma2: str = "sigma2", | 335 sigma2: str = "sigma2", |
| 329 deltar: str = "alpha*reff", | 336 deltar: str = "alpha", |
| 330 ) -> int: | 337 ) -> int: |
| 331 """Format and append row representing a selected FEFF path. | 338 """Format and append row representing a selected FEFF path. |
| 332 | 339 |
| 333 Args: | 340 Args: |
| 334 filename (str): Name of the underlying FEFF path file, without | 341 filename (str): Name of the underlying FEFF path file, without |
| 335 parent directory. | 342 parent directory. |
| 336 path_label (str): Label indicating the atoms involved in this path. | 343 path_label (str): Label indicating the atoms involved in this path. |
| 337 directory_label (str, optional): Label to indicate paths from a | 344 directory_label (str, optional): Label to indicate paths from a |
| 338 separate directory. Defaults to "". | 345 separate directory. Defaults to "". |
| 346 degen (str, optional): Path degeneracy variable name. | |
| 347 Defaults to "degen". | |
| 339 s02 (str, optional): Electron screening factor variable name. | 348 s02 (str, optional): Electron screening factor variable name. |
| 340 Defaults to "s02". | 349 Defaults to "s02". |
| 341 e0 (str, optional): Energy shift variable name. Defaults to "e0". | 350 e0 (str, optional): Energy shift variable name. Defaults to "e0". |
| 342 sigma2 (str, optional): Mean squared displacement variable name. | 351 sigma2 (str, optional): Mean squared displacement variable name. |
| 343 Defaults to "sigma2". | 352 Defaults to "sigma2". |
| 344 deltar (str, optional): Change in path length variable. | 353 deltar (str, optional): Change in path length variable. |
| 345 Defaults to "alpha*reff". | 354 Defaults to "alpha". |
| 346 | 355 |
| 347 Returns: | 356 Returns: |
| 348 int: The id of the added row. | 357 int: The id of the added row. |
| 349 """ | 358 """ |
| 350 if directory_label: | 359 if directory_label: |
| 354 filename = os.path.join("feff", filename) | 363 filename = os.path.join("feff", filename) |
| 355 label = path_label | 364 label = path_label |
| 356 | 365 |
| 357 row_id = len(self.rows) | 366 row_id = len(self.rows) |
| 358 self.rows.append( | 367 self.rows.append( |
| 359 f"{row_id:>4d}, {filename:>24s}, {label:>24s}, " | 368 f"{row_id:>4d}, {filename:>24s}, {label:>24s}, {degen:>5s}, " |
| 360 f"{s02:>3s}, {e0:>4s}, {sigma2:>24s}, {deltar:>10s}\n" | 369 f"{s02:>3s}, {e0:>4s}, {sigma2:>24s}, {deltar + '*reff':>10s}\n" |
| 361 ) | 370 ) |
| 362 | 371 |
| 363 return row_id | 372 return row_id |
| 364 | 373 |
| 365 def write(self): | 374 def write(self): |
