MCPcopy
hub / github.com/WassimTenachi/PhySO / test_pickability

Method test_pickability

physo/physym/tests/program_UnitTest.py:109–258  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

107 self.fail("Program creation failed.")
108
109 def test_pickability(self):
110
111 DEVICE = 'cpu'
112 if torch.cuda.is_available():
113 DEVICE = 'cuda'
114
115 # -------------------------------------- Making fake datasets --------------------------------------
116
117 multi_X = []
118 for n_samples in [90, 100, 110]:
119 x1 = np.linspace(0, 10, n_samples)
120 x2 = np.linspace(0, 1 , n_samples)
121 X = np.stack((x1,x2),axis=0)
122 X = torch.tensor(X).to(DEVICE)
123 multi_X.append(X)
124 multi_X = multi_X*10 # (n_realizations,) of (n_dim, [n_samples depends on dataset],)
125
126 n_samples_per_dataset = np.array([X.shape[1] for X in multi_X])
127 n_all_samples = n_samples_per_dataset.sum()
128 n_realizations = len(multi_X)
129 def flatten_multi_data (multi_data,):
130 """
131 Flattens multiple datasets into a single one for vectorized evaluation.
132 Parameters
133 ----------
134 multi_data : list of length (n_realizations,) of torch.tensor of shape (..., [n_samples depends on dataset],)
135 List of datasets to be flattened.
136 Returns
137 -------
138 torch.tensor of shape (..., n_all_samples)
139 Flattened data (n_all_samples = sum([n_samples depends on dataset])).
140 """
141 flattened_data = torch.cat(multi_data, axis=-1) # (..., n_all_samples)
142 return flattened_data
143
144 def unflatten_multi_data (flattened_data):
145 """
146 Unflattens a single data into multiple ones.
147 Parameters
148 ----------
149 flattened_data : torch.tensor of shape (..., n_all_samples)
150 Flattened data (n_all_samples = sum([n_samples depends on dataset])).
151 Returns
152 -------
153 list of len (n_realizations,) of torch.tensor of shape (..., [n_samples depends on dataset],)
154 Unflattened data.
155 """
156 return list(torch.split(flattened_data, n_samples_per_dataset.tolist(), dim=-1)) # (n_realizations,) of (..., [n_samples depends on dataset],)
157
158 # y_weights_per_dataset = np.array([0, 0.001, 1.0]*10) # Shows weights work
159 y_weights_per_dataset = torch.tensor(np.array([1., 1., 1.]*10))
160 multi_y_weights = [torch.full(size=(n_samples_per_dataset[i],), fill_value=y_weights_per_dataset[i]) for i in range (n_realizations)]
161 y_weights_flatten = flatten_multi_data(multi_y_weights)
162
163 multi_X_flatten = flatten_multi_data(multi_X) # (n_dim, n_all_samples)
164
165 # Making fake ideal parameters
166 # n_spe_params = 3

Callers

nothing calls this directly

Calls 6

saveMethod · 0.95
data_conversionFunction · 0.90
flatten_multi_dataFunction · 0.85
unflatten_multi_dataFunction · 0.85
appendMethod · 0.80
toMethod · 0.45

Tested by

no test coverage detected