Skip to content

Commit 97fb843

Browse files
authored
Merge pull request #1172 from ToFuProject/Issue1171_MoveDiagExcludeOptics
Issue1171 move diag exclude optics
2 parents 9add837 + c5f975f commit 97fb843

5 files changed

Lines changed: 78 additions & 23 deletions

File tree

tofu/data/_class08_Diagnostic.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,8 @@ def move_diagnostic_translate3d_by(
11111111
key_cam=None,
11121112
# new diag
11131113
key_new=None,
1114+
# fixed_optics
1115+
fixed_optics=None,
11141116
# move params
11151117
vect_xyz=None,
11161118
length=None,
@@ -1151,6 +1153,8 @@ def move_diagnostic_rotate3d_by(
11511153
key_cam=None,
11521154
# new diag
11531155
key_new=None,
1156+
# fixed_optics
1157+
fixed_optics=None,
11541158
# move params
11551159
axis_pt=None,
11561160
axis_vect=None,

tofu/data/_class08_move3d_check.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ def main(
1717
coll=None,
1818
key=None,
1919
key_cam=None,
20+
# fixed_optics
21+
fixed_optics=None,
2022
# new diag
2123
key_new=None,
2224
# move - translate
@@ -66,7 +68,30 @@ def main(
6668
excluded=lout,
6769
)
6870

69-
out = (key, key_cam, key_new)
71+
# --------------
72+
# fixed_optics
73+
# --------------
74+
75+
if len(key_cam) == 0:
76+
fixed_optics = None
77+
else:
78+
if fixed_optics is None:
79+
fixed_optics = ()
80+
if isinstance(fixed_optics, str):
81+
fixed_optics = (fixed_optics,)
82+
83+
lok = set(np.concatenate([
84+
coll.dobj[wdiag][key]['doptics'][kcam]['optics']
85+
for kcam in key_cam
86+
]))
87+
fixed_optics = tuple(ds._generic_check._check_var_iter(
88+
fixed_optics, 'fixed_optics',
89+
types=(list, tuple),
90+
types_iter=str,
91+
allowed=lok,
92+
))
93+
94+
out = (key, key_cam, key_new, fixed_optics)
7095

7196
# --------------
7297
# move params
@@ -235,6 +260,12 @@ def _add_asis(
235260
if isinstance(dgeom0[kk], str):
236261
dgeom[kk] = coll.ddata[kk]['data']
237262

263+
elif isinstance(dgeom0[kk], tuple):
264+
if all([isinstance(vv, str) for vv in dgeom0[kk]]):
265+
for vv in dgeom0[kk]:
266+
cc = vv.split('_')[-1]
267+
dgeom[f"{kk}_{cc}"] = coll.ddata[vv]['data']
268+
238269
else:
239270
if dgeom0.get(kk) is not None:
240271
dgeom[kk] = dgeom0[kk]

tofu/data/_class08_move_rotate3d_by.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ def main(
1919
key_cam=None,
2020
# new diag
2121
key_new=None,
22+
# fixed_optics
23+
fixed_optics=None,
2224
# move params
2325
axis_pt=None,
2426
axis_vect=None,
@@ -45,10 +47,13 @@ def main(
4547
# ----------
4648

4749
(
48-
key, key_cam, key_new,
50+
key, key_cam, key_new, fixed_optics,
4951
angle, axis_pt, axis_vect,
5052
) = _check.main(move='rotate', **locals())
5153

54+
if len(key_cam) == 0:
55+
return
56+
5257
# ----------
5358
# prepare
5459
# ----------
@@ -83,15 +88,20 @@ def main(
8388
doptics[kcam_new] = {}
8489
for kop in doptics0[kcam]['optics']:
8590

86-
# translate
87-
kop_new = _rotate_optics(
88-
coll=coll,
89-
kop=kop,
90-
axis_pt=axis_pt[kcam],
91-
axis_vect=axis_vect[kcam],
92-
angle=angle[kcam],
93-
key_new=key_new,
94-
)
91+
if kop in fixed_optics:
92+
kop_new = kop
93+
94+
else:
95+
# rotate
96+
kop_new = _rotate_optics(
97+
coll=coll,
98+
kop=kop,
99+
axis_pt=axis_pt[kcam],
100+
axis_vect=axis_vect[kcam],
101+
angle=angle[kcam],
102+
key_new=key_new,
103+
)
104+
95105
lop_new.append(kop_new)
96106

97107
# doptics

tofu/data/_class08_move_translate3d_by.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ def main(
1515
key_cam=None,
1616
# new diag
1717
key_new=None,
18+
# fixed_optics
19+
fixed_optics=None,
1820
# move params
1921
vect_xyz=None,
2022
length=None,
@@ -40,10 +42,13 @@ def main(
4042
# ----------
4143

4244
(
43-
key, key_cam, key_new,
45+
key, key_cam, key_new, fixed_optics,
4446
length, vect_xyz,
4547
) = _check.main(move='translate', **locals())
4648

49+
if len(key_cam) == 0:
50+
return
51+
4752
# ----------
4853
# prepare
4954
# ----------
@@ -77,14 +82,19 @@ def main(
7782
doptics[kcam_new] = {}
7883
for kop in doptics0[kcam]['optics']:
7984

80-
# translate
81-
kop_new = _translate_optics(
82-
coll=coll,
83-
kop=kop,
84-
length=length[kcam],
85-
vect_xyz=vect_xyz[kcam],
86-
key_new=key_new,
87-
)
85+
if kop in fixed_optics:
86+
kop_new = kop
87+
88+
else:
89+
# translate
90+
kop_new = _translate_optics(
91+
coll=coll,
92+
kop=kop,
93+
length=length[kcam],
94+
vect_xyz=vect_xyz[kcam],
95+
key_new=key_new,
96+
)
97+
8898
lop_new.append(kop_new)
8999

90100
# doptics

tofu/data/_class8_check.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -749,13 +749,13 @@ def _get_default_cam(coll=None, key=None, key_cam=None, default=None):
749749
if isinstance(key_cam, str):
750750
key_cam = [key_cam]
751751

752-
key_cam = ds._generic_check._check_var_iter(
752+
key_cam = list(ds._generic_check._check_var_iter(
753753
key_cam, 'key_cam',
754-
types=list,
754+
types=(list, tuple),
755755
types_iter=str,
756756
allowed=lok,
757757
default=key_cam_def,
758-
)
758+
))
759759

760760
return key, key_cam
761761

0 commit comments

Comments
 (0)