11from pathlib import Path
22
3+ from diffpy .srfit .fitbase import Profile
34from diffpy .srfit .fitbase .parameter import Parameter
45from diffpy .srfit .fitbase .parameterset import ParameterSet
56from diffpy .srfit .pdf .pdfparser import PDFParser
67from diffpy .srfit .structure import struToParameterSet
78from diffpy .structure import Structure
89
910
11+ class RefinenableModel (ParameterSet ):
12+ """
13+ A RefinenableModel instance provides access to both the ParameterSet
14+ and the underlying model object.
15+ """
16+
17+ def __init__ (self , name ):
18+ super ().__init__ (name = name )
19+ self .model = None
20+ self .parameters = None
21+
22+
1023class ParameterParser :
1124 def __init__ (self ):
1225 pass
@@ -28,15 +41,22 @@ def _parse_pdf(
2841 pass
2942 parser = PDFParser ()
3043 parser .parseFile (profile_file )
44+ profile = Profile ()
45+ profile .loadParsedData (parser )
3146 parameter_values = parser .getData ()
3247 parameter_names = ["x" , "y" , "dx" , "dy" ]
3348 parameter_set = _construct_parameterset (
3449 parameter_names , parameter_values , parset_name
3550 )
51+ profile_model = RefinenableModel (name = parset_name )
52+ profile_model .model = profile
53+ profile_model .parameters = parameter_set
3654 meta = dict (parser .getMetaData ())
37- return parameter_set , meta
55+ return profile_model , meta
3856
39- def _parse_structure (self , structure_file : str ):
57+ def _parse_structure (
58+ self , structure_file : str , parset_name : str = "structure_parameterset"
59+ ):
4060 if not Path (structure_file ).exists ():
4161 raise FileNotFoundError (
4262 self .MISSING_FILE_WARNING .format (
@@ -45,35 +65,16 @@ def _parse_structure(self, structure_file: str):
4565 )
4666 stru = Structure ()
4767 stru .read (structure_file )
48- structure_parameterset = struToParameterSet (
49- "structure_parameterset" , stru
68+ stru_diffpy_parset = struToParameterSet (parset_name , stru )
69+ structure_mdel = RefinenableModel (name = parset_name )
70+ structure_mdel .model = stru
71+ structure_mdel .parameters = ParameterSet (name = parset_name )
72+ structure_mdel .parameters .addParameterSet (
73+ stru_diffpy_parset .getLattice ()
5074 )
51- return structure_parameterset
52-
53-
54- class ParameterAdapter :
55- """
56- A ParameterAdapter class contains methods to adapt parameters of
57- variables format to the standard format used in diffpy
58- """
59-
60- def __init__ (self ):
61- pass
62-
63- def _adapt_string (self , parameter : str ):
64- pass
65-
66- def _adapt_code (self , function_code : str ):
67- pass
68-
69- def _adapt_special (self , special_parameter : str ):
70- pass
71-
72- def _adapt_structure_file (self , phase_file : str ):
73- pass
74-
75- def _adapt_profile_file (self , profile_file : str ):
76- pass
75+ for atom_parset in stru_diffpy_parset .getScatterers ():
76+ structure_mdel .parameters .addParameterSet (atom_parset )
77+ return structure_mdel
7778
7879
7980def _construct_parameterset (names , values , parset_name ):
0 commit comments