1
1
#!/usr/bin/env python
2
2
3
+ import numpy as np
3
4
from diffpy .morph .morphapp import (
4
5
create_option_parser ,
5
6
multiple_morphs ,
8
9
)
9
10
10
11
11
- def morph (file1 , file2 , ** kwargs ):
12
+ def morph (morph_file , target_file , ** kwargs ):
12
13
"""Run diffpy.morph at Python level.
13
14
14
15
Parameters
15
16
----------
16
- file1 : str
17
+ morph_file : str
17
18
Path-like object to the file to be morphed.
18
- file2 : str
19
+ target_file : str
19
20
Path-like object to the target file.
20
21
kwargs: dict
21
22
See the diffpy.morph manual for options.
@@ -33,7 +34,53 @@ def morph(file1, file2, **kwargs):
33
34
inputs .append (f"--{ key } " )
34
35
inputs .append (f"{ value } " )
35
36
(opts , pargs ) = parser .parse_args (inputs )
36
- pargs = [file1 , file2 ]
37
+ pargs = [morph_file , target_file ]
38
+
39
+ return single_morph (
40
+ parser , opts , pargs , stdout_flag = False , python_wrap = True
41
+ )
42
+
43
+
44
+ def morphpy (morph_table , target_table , morph_header , target_header , ** kwargs ):
45
+ """Run diffpy.morph at Python level.
46
+
47
+ Parameters
48
+ ----------
49
+ morph_table: numpy.array
50
+ Two-column array of (r, gr) for morphed function.
51
+ target_table: numpy.array
52
+ Two-column array of (r, gr) for target function.
53
+ morph_header: dict
54
+ Any relevant parameters (e.g. wavelength, composition, temperature)
55
+ for the morphed function.
56
+ target_header: dict
57
+ Any relevant parameters for the target ction.
58
+ kwargs: dict
59
+ See the diffpy.morph manual for options.
60
+
61
+ Returns
62
+ -------
63
+ dict:
64
+ Summary of morphs.
65
+ """
66
+
67
+ parser = create_option_parser ()
68
+
69
+ inputs = []
70
+ for key , value in kwargs .items ():
71
+ inputs .append (f"--{ key } " )
72
+ inputs .append (f"{ value } " )
73
+ (opts , pargs ) = parser .parse_args (inputs )
74
+
75
+ morph_table = np .array (morph_table )
76
+ target_table = np .array (target_table )
77
+
78
+ x_morph = morph_table [:, 0 ]
79
+ y_morph = morph_table [:, 1 ]
80
+ x_target = target_table [:, 0 ]
81
+ y_target = target_table [:, 1 ]
82
+
83
+ pargs = ["Morph" , "Target" , x_morph , y_morph , x_target , y_target ]
37
84
38
85
return single_morph (
39
86
parser , opts , pargs , stdout_flag = False , python_wrap = True
0 commit comments