bool_array[exclude] = True # establish training set (everything remaining) idx_train = np.where(bool_array==False) spectra_train = broad_spectra_noNa[idx_train] spectra_validate = broad_spectra_noNa[idx_validate] specmatch_spectra.append(spectra_validate) # ----- input for another Cannon run if needed --------- # parameter matrix of training set specmatch_labels = broad_labels[idx_train] # inverse variance matrices ivar_train = ivar_vsini(broad_err[idx_train],flag='train') ivar_validate = ivar_vsini(broad_err[idx_validate],flag='val') # ----- run The Cannon ------------ # constructs CannonModel object using a 3nd order polynomial vectorizer label_names = ("TEFF", "RSTAR", "FE_H", "VSINI") model = tc.CannonModel(specmatch_labels, spectra_train, ivar_train, vectorizer = tc.vectorizer.PolynomialVectorizer(label_names,3)) scales, fiducials, theta = (model._scales, model._fiducials, model.theta) vectorizer = model.vectorizer ''' # let's add regularization model.regularization = 100.0 # lists model variables
cannon_s2=[] # let's bootstrap this for _ in range(20): spectra_val_noNa_degrad=[] for spectrum1,snr1 in zip(spectra_val_noNa,snr_val): noise = np.random.normal(loc=0.0,scale=sigma_snr(snr1),size=len(spectrum1)) spectrum1 = spectrum1+noise spectra_val_noNa_degrad.append(spectrum1) spectra_val_noNa_degrad = np.asarray(spectra_val_noNa_degrad) # inverse variance matrices ivar_train = ivar_vsini(err_tr_noNa,flag='train') ivar_validate = ivar_vsini(err_val_noNa,flag='val') # ----- run The Cannon ------------ # constructs CannonModel object using a 3rd order polynomial vectorizer label_names = ("TEFF", "RSTAR", "FE_H", "VSINI") model = tc.CannonModel(labels, spectra_tr_noNa, ivar_train, vectorizer = tc.vectorizer.PolynomialVectorizer(label_names,3)) # Training Step theta, s2, metadata = model.train(threads=1) cannon_s2.append(s2) # instrinsic model variance # Test Step
spectra_val_resamp = np.asarray(spectra_val_resamp) errs_val_resamp = np.asarray(errs_val_resamp) # normalize test/validation set spectra spectra_val_resamp,errs_val_resamp = [gauss_norm(spectrum_val,lib.wav,err_val) for spectrum_val,err_val in zip(spectra_val_resamp,errs_val_resamp),3] # removes Na doublet (wavs_val = wavs_tr) spectra_val,errs_val,wavs_val = rm_Na_doublt(spectra_val_resamp,errs_val_resamp,lib.wav) # ---------------------------------------------------------------------------------- # ----- run The Cannon ------------------------------------------------------------ # ---------------------------------------------------------------------------------- # inverse variance matrices ivar_tr = ivar_vsini(errs_tr,flag='train') ivar_val = ivar_vsini(errs_val,flag='val') # ----- run The Cannon ------------ # constructs CannonModel object using a 3rd order polynomial vectorizer label_names = ("TEFF", "RSTAR", "FE_H", "VSINI") vectorizer = tc.vectorizer.PolynomialVectorizer(label_names,3) model = tc.CannonModel(labels_tr, spectra_tr, ivar_tr, vectorizer = vectorizer) ''' # can save the model to a disk # can shoose to save training set fluxes+inverse variances (or not) - # may be useful if you want to re-train the model w/ regularization, etc.