Create custom translation classes
We show here an example to build you own translation class. We refer A to the source domain and B to the target domain.
class InstrumentAToInstrumentB(InstrumentToInstrument):
def __init__(self, model_name='model name', **kwargs):
super().__init__(model_name, **kwargs)
self.norms = [['norm1'], ['norm2'], '...']
def translate(self, path, basenames=None, **kwargs):
A_dataset = ADataset(path, basenames=basenames, **kwargs)
for maps, img, iti_img in self._translateDataset(A_dataset):
yield [Map(norm.inverse((s_map.data + 1) / 2), self.toInstrumentBmeta(s_map.meta, instr))
for s_map, norm, instr in zip(maps, self.norms, ['InstrumentB'] * 2)]
def toInstrumentBmeta(self, meta, instrument):
wl_map = {174: 171, 304: 304}
new_meta = meta.copy()
new_meta['obsrvtry'] = 'ITI'
new_meta['telescop'] = 'MissionB'
new_meta['instrume'] = instrument
new_meta['WAVELNTH'] = wl_map[meta.get('WAVELNTH', 0)]
new_meta['waveunit'] = 'angstrom'
return new_meta