File tree Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Expand file tree Collapse file tree 1 file changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -76,13 +76,19 @@ def rename_vars(self, newname):
76
76
note (f"> renaming { oldname } to { newname } " )
77
77
78
78
@rule ()
79
- @precondition (lambda self : len (self .dataset ._variables ) >= 2 )
79
+ @precondition (
80
+ lambda self : (
81
+ len (self .dataset ._variables ) >= 2
82
+ and (set (self .dataset .dims ) & set (self .dataset ._variables ))
83
+ )
84
+ )
80
85
def swap_dims (self ):
81
86
ds = self .dataset
82
- dim = random .choice (tuple (ds .dims ))
83
-
84
- to = dim + "_" if "_" not in dim else dim [:- 1 ]
85
- assert to in ds ._variables
87
+ # need a dimension coordinate for swapping
88
+ dim = random .choice (tuple (set (ds .dims ) & set (ds ._variables )))
89
+ to = random .choice (
90
+ [name for name , var in ds ._variables .items () if var .size == ds .sizes [dim ]]
91
+ )
86
92
self .dataset = ds .swap_dims ({dim : to })
87
93
note (f"> swapping { dim } to { to } " )
88
94
You can’t perform that action at this time.
0 commit comments