-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathxds.py
95 lines (88 loc) · 3.37 KB
/
xds.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import json
from pathlib import Path
def gen_xds_text(UNIT_CELL_CONSTANTS, NAME_TEMPLATE_OF_DATA_FRAMES, ORGX, ORGY,
DETECTOR_DISTANCE, OSCILLATION_RANGE, X_RAY_WAVELENGTH, DATA_RANGE,
BACKGROUND_RANGE, SPOT_RANGE, LIB, SPACE_GROUP_NUMBER, ):
dataframes = "??????".join((str(NAME_TEMPLATE_OF_DATA_FRAMES).rsplit("master", 1)))
text = f"""
SPACE_GROUP_NUMBER={SPACE_GROUP_NUMBER}
UNIT_CELL_CONSTANTS= {UNIT_CELL_CONSTANTS}
NAME_TEMPLATE_OF_DATA_FRAMES= {NAME_TEMPLATE_OF_DATA_FRAMES}
JOB= XYCORR INIT COLSPOT IDXREF DEFPIX INTEGRATE CORRECT
ORGX= {ORGX} ORGY= {ORGY}
DETECTOR_DISTANCE= {DETECTOR_DISTANCE}
OSCILLATION_RANGE= {OSCILLATION_RANGE}
X-RAY_WAVELENGTH= {X_RAY_WAVELENGTH}
DATA_RANGE= {DATA_RANGE}
BACKGROUND_RANGE= {BACKGROUND_RANGE}
SPOT_RANGE= {SPOT_RANGE}
{LIB}
DETECTOR= EIGER MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD= 35187210
SENSOR_THICKNESS= 0.45
NX= 4148 NY= 4362 QX= 0.075 QY= 0.075
TRUSTED_REGION=0.0 1.2
DIRECTION_OF_DETECTOR_X-AXIS= 1.0 0.0 0.0
DIRECTION_OF_DETECTOR_Y-AXIS= 0.0 1.0 0.0
MAXIMUM_NUMBER_OF_JOBS=
MAXIMUM_NUMBER_OF_PROCESSORS=
ROTATION_AXIS= -1.0 0.0 0.0
INCIDENT_BEAM_DIRECTION=0.0 0.0 1.0
FRACTION_OF_POLARIZATION=0.99
POLARIZATION_PLANE_NORMAL= 0.0 1.0 0.0
REFINE(IDXREF)=BEAM AXIS ORIENTATION CELL ! POSITION
REFINE(INTEGRATE)= ORIENTATION POSITION BEAM ! CELL AXIS
REFINE(CORRECT)=POSITION BEAM ORIENTATION CELL AXIS
VALUE_RANGE_FOR_TRUSTED_DETECTOR_PIXELS= 6000 30000
!INCLUDE_RESOLUTION_RANGE=50 1.8
MINIMUM_I/SIGMA=50.0
CORRECTIONS= !
MINIMUM_FRACTION_OF_INDEXED_SPOTS=0.5
SEPMIN=4.0
INDEX_ERROR=0.1 INDEX_MAGNITUDE=8 INDEX_QUALITY=0.8
CLUSTER_RADIUS=2
MINIMUM_NUMBER_OF_PIXELS_IN_A_SPOT=3
UNTRUSTED_RECTANGLE= 1028 1041 0 4363
UNTRUSTED_RECTANGLE= 2068 2081 0 4363
UNTRUSTED_RECTANGLE= 3108 3121 0 4363
UNTRUSTED_RECTANGLE= 0 4149 512 551
UNTRUSTED_RECTANGLE= 0 4149 1062 1101
UNTRUSTED_RECTANGLE= 0 4149 1612 1651
UNTRUSTED_RECTANGLE= 0 4149 2162 2201
UNTRUSTED_RECTANGLE= 0 4149 2712 2751
UNTRUSTED_RECTANGLE= 0 4149 3262 3301
UNTRUSTED_RECTANGLE= 0 4149 3812 3851
NUMBER_OF_PROFILE_GRID_POINTS_ALONG_ALPHA/BETA=13
NUMBER_OF_PROFILE_GRID_POINTS_ALONG_GAMMA=13
"""
return text
def xds_from_json():
with open("xds_def.json") as f:
xds_json = json.load(f)
return xds_json
def get_detector_params(det):
with open("detectors.json") as y:
det_json = json.load(y)
for item in det_json:
if item == det:
det1 = det_json[item]
return det1
def get_xds_params(args):
xds_params = xds_from_json()
xds_params['ORGX']['value'] = args.beamcenter[0]
xds_params['ORGY']['value'] = args.beamcenter[1]
xds_params['DETECTOR_DISTANCE']['value'] = args.distance
xds_params['X-RAY_WAVELENGTH']['value'] = args.wavelength
xds_params['OSCILLATION_RANGE']['value'] = "{:.2f}".format(1/args.framesperdegree)
xds_params['MAXIMUM_NUMBER_OF_JOBS']['value'] = args.jobs
xds_params['MAXIMUM_NUMBER_OF_PROCESSORS']['value'] = args.processors
xds_params['SPACE_GROUP_NUMBER']['value'] = args.spacegroup
xds_params['UNIT_CELL_CONSTANTS']['value'] = args.unitcell
if args.library:
xds_params['LIB']['value'] = args.library
xds_params['LIB']['required'] = True
return xds_params
def get_library_path(self):
if not self.args.library:
return "!LIB="
else:
return f"LIB= {self.args.library}"