def FIRST_Fraction(CHANNELS=[['FIRST']], PROJECT_DIR='Script_Experiments_Fraction_Learning', TRIAL=0): rgz_dir = 'rgz_rcnn_data' cat = Catalog(rgz_dir=rgz_dir) print('\nValidating sources...') cat.collect_valid_sources() for bin_opts, pink_opts, channels, learning in product( BINARY_OPTS, PINK_OPTS, CHANNELS, LEARNING_MODES): print(bin_opts, pink_opts) # Make sure there are enough channels to do the mask with if len(CHANNELS[0]) == 1 and bin_opts['convex']: print( f'Skipping this option set. CHANNELS is {CHANNELS[0]}, nothing to apply convex hull masking to. ' ) continue chan_name = '_'.join(channels) out_dir = f"{PROJECT_DIR}/{chan_name}_{bin_opts['project_dir']}_{pink_opts['som-width']}x{pink_opts['som-height']}_Trial{TRIAL}" results = [] if not os.path.exists(f'{out_dir}/trained.pink'): # This is painful, but since product() is returning a reference to a dict, we cant # edit the project_dir in place to build up the folder name, as this gets carried # through to later iterations. Hence, we can't **bin_opts below bins = cat.dump_binary('source.binary', channels=channels, project_dir=out_dir, norm=bin_opts['norm'], sigma=bin_opts['sigma'], log10=bin_opts['log10'], convex=bin_opts['convex'], fraction=bin_opts['fraction']) train_bin, validate_bin = bins pink = Pink(train_bin, pink_args=pink_opts, validate_binary=validate_bin) pink.train(learning=learning) else: print('Loading in saved Pink instance') pink = Pink.loader(f'{out_dir}/trained.pink') for i, t in enumerate(pink.binary): try: pink.map(mode=i) pink.map(mode='validate', SOM_mode=i) pink.save('trained.pink') pink.show_som(channel=0, mode=i) pink.show_som(channel=0, mode=i, plt_mode='split') pink.show_som(channel=0, mode=i, plt_mode='grid') pink.show_som(channel=1, mode=i) pink.show_som(channel=1, mode=i, plt_mode='split') pink.show_som(channel=1, mode=i, plt_mode='grid') except Exception as e: print('Try caught something') print(e) import traceback traceback.print_exc() plt.close('all')
def main(): test_dir = 'Test_Experiment' proj_dir = 'FIRST_Norm_Log_3' pink_opts = { 'som-width': 10, 'som-height': 10, 'num-iter': 1, 'inter-store': 'keep' } rgz_dir = 'rgz_rcnn_data' cat = Catalog(rgz_dir=rgz_dir) print('\nValidating sources...') cat.collect_valid_sources() out_dir = f"{test_dir}/FIRST_{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_10_iter" if not os.path.exists(f'{out_dir}/trained.pink'): bins = cat.dump_binary('source.binary', channels=['FIRST'], project_dir=out_dir, norm=True, sigma=3., log10=True, fraction=0.75) train_bin, validate_bin = bins pink = Pink(train_bin, pink_args=pink_opts, validate_binary=validate_bin) pink.train(learning=[('gaussian', '3.0', '0.1'), ('gaussian', '1.4', '0.05'), ('gaussian', '0.3', '0.01')]) pink.map() pink.map(mode='validate', SOM_mode='train') pink.save('trained.pink') pink_opts = { 'som-width': 15, 'som-height': 15, 'num-iter': 1, 'inter-store': 'keep' } out_dir = f"{test_dir}/FIRST_{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_20_iter" if not os.path.exists(f'{out_dir}/trained.pink'): bins = cat.dump_binary('source.binary', channels=['FIRST'], project_dir=out_dir, norm=True, sigma=2., log10=True, fraction=0.75) train_bin, validate_bin = bins pink = Pink(train_bin, pink_args=pink_opts, validate_binary=validate_bin) pink.train(learning=[('gaussian', '3.0', '0.1'), ('gaussian', '1.4', '0.05'), ('gaussian', '0.3', '0.01')]) pink.map() pink.map(mode='validate', SOM_mode='train') pink.save('trained.pink') # pink_opts = {'som-width':10, 'som-height':10, 'num-iter':1, 'inter-store':'keep'} # out_dir = f"{test_dir}/FIRST_{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_30_iter" # if not os.path.exists(f'{out_dir}/trained.pink'): # bins = cat.dump_binary('source.binary', channels=['FIRST'], project_dir=out_dir, # norm=True, sigma=2., log10=True, fraction=0.75) # train_bin, validate_bin = bins # pink = Pink(train_bin, # pink_args=pink_opts, # validate_binary=validate_bin) # pink.train(learning=[('gaussian','3.0','0.1'), # ('gaussian','1.4','0.05'), # ('gaussian','0.3','0.01')]) # pink.map() # pink.map(mode='validate', SOM_mode='train') # pink.save('trained.pink') # --------------------------------------------------------- proj_dir = 'FIRST_WISE_Norm_Log_3' pink_opts = { 'som-width': 10, 'som-height': 10, 'num-iter': 1, 'progress': 0.05, 'inter-store': 'keep' } out_dir = f"{test_dir}/{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_10_iter" if not os.path.exists(f'{out_dir}/trained.pink'): bins = cat.dump_binary('source.binary', channels=['FIRST', 'WISE_W1'], project_dir=out_dir, norm=True, sigma=3., log10=True, fraction=0.75) train_bin, validate_bin = bins pink = Pink(train_bin, pink_args=pink_opts, validate_binary=validate_bin) pink.train(learning=[('gaussian', '3.0', '0.1'), ('gaussian', '1.4', '0.05'), ('gaussian', '0.3', '0.01')]) pink.map() pink.map(mode='validate', SOM_mode='train') pink.save('trained.pink') pink_opts = { 'som-width': 15, 'som-height': 15, 'num-iter': 1, 'progress': 0.05, 'inter-store': 'keep' } out_dir = f"{test_dir}/{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_20_iter" if not os.path.exists(f'{out_dir}/trained.pink'): bins = cat.dump_binary('source.binary', channels=['FIRST', 'WISE_W1'], project_dir=out_dir, norm=True, sigma=2., log10=True, fraction=0.75) train_bin, validate_bin = bins pink = Pink(train_bin, pink_args=pink_opts, validate_binary=validate_bin) pink.train(learning=[('gaussian', '3.0', '0.1'), ('gaussian', '1.4', '0.05'), ('gaussian', '0.3', '0.01')]) pink.map() pink.map(mode='validate', SOM_mode='train') pink.save('trained.pink')