def testg_initCustomShape(): config = confParse.loadSoapyConfig(os.path.join(CONFIG_PATH, "sh_8x8.yaml")) config.sim.pupilSize = 64 config.sim.simSize = 66 mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) dm = DM.KarhunenLoeve(config, n_dm=1, wfss=[wfs], mask=mask) customShape = dm.iMatShapes # saving temporary shapes fname = os.path.dirname( os.path.abspath(__file__)) + '/tmp_CustomDmShapes.fits' fits.writeto(fname, customShape, overwrite=True) # change size to ensure it tests interpolation config.sim.pupilSize = 100 config.sim.simSize = 104 mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) config.dms[1].dmShapesFilename = fname dm = DM.CustomShapes(config, n_dm=1, wfss=[wfs], mask=mask) # remove temporary shapes os.remove(fname)
def testc_initLegacySHWfs(self): config = confParse.loadSoapyConfig( os.path.join(CONFIG_PATH, "sh_8x8.yaml")) mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.ShackHartmannLegacy(config, mask=mask)
def teste_initPyrWfs(self): config = confParse.Configurator("../conf/sh_8x8.py") config.loadSimParams() mask = aoSimLib.circle(config.sim.pupilSize/2., config.sim.simSize) wfs = WFS.Pyramid(config.sim, config.wfss[0], config.atmos, config.lgss[0], mask)
def test_Piezo_valid_actuators(): """ Tests that when you set the "valid actuators", the DM doesn't use actuators marked 'invalid' """ config = confParse.loadSoapyConfig(os.path.join(CONFIG_PATH, "sh_8x8.yaml")) mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) dm = DM.FastPiezo(config, n_dm=1, wfss=[wfs], mask=mask) act_coord1 = dm.valid_act_coords[0] act_coord_last = dm.valid_act_coords[-1] act_coord2 = dm.valid_act_coords[1] valid_actuators = numpy.ones(dm.n_acts, dtype=int) valid_actuators[0] = valid_actuators[-1] = 0 dm.valid_actuators = valid_actuators assert dm.n_valid_actuators == (dm.n_acts - 2) assert not numpy.array_equal(dm.valid_act_coords[0], act_coord1) assert not numpy.array_equal(dm.valid_act_coords[-1], act_coord_last) assert numpy.array_equal(dm.valid_act_coords[0], act_coord2)
def testc_initGradWfs(self): config = confParse.loadSoapyConfig( os.path.join(CONFIG_PATH, "sh_8x8.yaml")) config.sim.pupilSize = 10 * config.wfss[0].nxSubaps mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.Gradient(config, mask=mask)
def testd_SHWfsFrame(self): config = confParse.loadSoapyConfig( os.path.join(CONFIG_PATH, "sh_8x8.yaml")) mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) wfs.frame(numpy.zeros((config.sim.simSize, config.sim.simSize)))
def testa_initWfs(self): config = confParse.loadSoapyConfig( os.path.join(CONFIG_PATH, "sh_8x8.yaml")) mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.WFS(config, mask=mask)
def testf_PyrWfsFrame(self): config = confParse.Configurator("../conf/sh_8x8.py") config.loadSimParams() mask = aoSimLib.circle(config.sim.pupilSize/2., config.sim.simSize) wfs = WFS.Pyramid(config.sim, config.wfss[0], config.atmos, config.lgss[0], mask) wfs.frame(numpy.zeros((config.sim.simSize, config.sim.simSize)))
def testa_initDM(): config = confParse.loadSoapyConfig(os.path.join(CONFIG_PATH, "sh_8x8.yaml")) mask = aotools.circle(config.sim.pupilSize/2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) dm = DM.DM(config, wfss=[wfs], mask=mask)
def testa_initWfs(self): config = confParse.Configurator(os.path.join(CONFIG_PATH, "sh_8x8.py")) config.loadSimParams() mask = aoSimLib.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.WFS(config, mask=mask)
def testd_GradWfsFrame(self): config = confParse.Configurator(os.path.join(CONFIG_PATH, "sh_8x8.py")) config.loadSimParams() mask = aoSimLib.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.Gradient(config, mask=mask) wfs.frame(numpy.zeros((config.sim.simSize, config.sim.simSize)))
def testa_initDM(self): config = confParse.Configurator(os.path.join(CONFIG_PATH, "sh_8x8.py")) config.loadSimParams() mask = aoSimLib.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) dm = DM.DM(config, wfss=[wfs], mask=mask)
def testd_GradWfsFrame(self): config = confParse.loadSoapyConfig( os.path.join(CONFIG_PATH, "sh_8x8.yaml")) config.sim.pupilSize = 10 * config.wfss[0].nxSubaps mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.Gradient(config, mask=mask) wfs.frame(numpy.zeros((config.sim.simSize, config.sim.simSize)))
def test_PhysWfs(self): config = confParse.Configurator(os.path.join(CONFIG_PATH, "sh_8x8.py")) config.loadSimParams() config.wfss[0].propagationMode = "Physical" mask = aoSimLib.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.WFS(config, mask=mask) wfs.frame([numpy.zeros( (config.sim.scrnSize, ) * 2)] * config.atmos.scrnNo)
def test_PhysWfs(self): config = confParse.loadSoapyConfig( os.path.join(CONFIG_PATH, "sh_8x8.yaml")) config.wfss[0].propagationMode = "Physical" mask = aotools.circle(config.sim.pupilSize / 2., config.sim.simSize) wfs = WFS.WFS(config, mask=mask) wfs.frame( numpy.zeros((config.atmos.scrnNo, config.sim.scrnSize, config.sim.scrnSize)))
def test_set_valid_actuators(): """ Tests that when you set the "valid actuators", the DM computes how many valid actuators there are correctly """ config = confParse.loadSoapyConfig(os.path.join(CONFIG_PATH, "sh_8x8.yaml")) mask = aotools.circle(config.sim.pupilSize/2., config.sim.simSize) wfs = WFS.ShackHartmann(config, mask=mask) dm = DM.DM(config, n_dm=1, wfss=[wfs], mask=mask) valid_actuators = numpy.ones(dm.n_acts, dtype=int) valid_actuators[0] = valid_actuators[-1] = 0 dm.valid_actuators = valid_actuators assert dm.n_valid_actuators == (dm.n_acts - 2)