sf_qu1.frame_col_cut([0,1,1465]) sf_qu1.contrast_cut(80) sf_qu1.set_continua("segments") ## Select subset lowNiIcut = -0.511135 # Read off from Ni I vel qu1sel = np.arange(0,3107) # Givin pretty pure cut qu1 = sf_qu1.make_spectra() qu1.modify(lambda x : x[qu1sel,:]) # Cutting qu1.meta.cont = (qu1.meta.cont[0][qu1sel], qu1.meta.cont[1][qu1sel]) # Updating continua qu1m = qu1[:,:].mean(axis=0) qu1con = qu1.meta.cont[0]*qu1.lmbd.mean() + qu1.meta.cont[1] # Define continua for qu1 series qu1NiI = spc.splineline(wNiI, NiI, qu1.meta);qu1NiI.recenter(qu1m) qu1CI = spc.splineline(wCI, CI, qu1.meta);qu1CI.recenter(qu1m) qu1C2 = spc.splineline(wC2, C2, qu1.meta);qu1C2.recenter(qu1m) qu1TiI = spc.splineline(wTiI, TiI, qu1.meta);qu1TiI.recenter(qu1m) qu1Myst = spc.splineline(wMyst, Myst, qu1.meta);qu1Myst.recenter(qu1m) qu1FeI = spc.splineline(wFeI, FeI, qu1.meta);qu1FeI.recenter(qu1m) qu1FeI2 = spc.splineline(wFeI2, FeI2, qu1.meta);qu1FeI2.recenter(qu1m) qu1lines = [qu1NiI,qu1CI,qu1C2,qu1TiI,qu1Myst,qu1FeI,qu1FeI2] wNiI = [1065,1099] wCI = [732,764]; wC2 = [693,705]; wTiI = [669,679]; wMyst = [588,622]; wFeI = [485,505];
wMyst = [652, 721]; wSiI = [478, 518]; wFeI2 = [377, 438]; wSiI2 = [310, 340]; sf_qu1 = spc.SpectraFactory("data/6405_aS1",framerows=800,framecols=1472) sf_qu1.frame_col_cut([0,1471]) sf_qu1.frame_row_cut([0]+list(range(668,677))+[799]) sf_qu1.contrast_cut(50) sf_qu1.set_continua("segments") qu1 = sf_qu1.make_spectra() qu1m = qu1[:,:].mean(axis=0) qu1con = qu1.meta.cont[0]*qu1.lmbd.mean() + qu1.meta.cont[1] qu1FeI = spc.splineline(wFeI, FeI, qu1.meta);qu1FeI.recenter(qu1m) qu1Myst = spc.splineline(wMyst, Myst, qu1.meta);qu1Myst.recenter(qu1m) qu1SiI = spc.splineline(wSiI, SiI, qu1.meta);qu1SiI.recenter(qu1m) qu1FeI2 = spc.splineline(wFeI2, FeI2, qu1.meta);qu1FeI2.recenter(qu1m) qu1SiI2 = spc.splineline(wSiI2, SiI2, qu1.meta);qu1SiI2.recenter(qu1m) qu1lines = [qu1FeI,qu1Myst,qu1SiI,qu1FeI2,qu1SiI2] # ... and save in this list for qu1 sf_qu2 = spc.SpectraFactory("data/6405_bS1",framerows=756,framecols=1472) sf_qu2.frame_col_cut([0,1,1471]) sf_qu2.frame_row_cut([0]+list(range(663,670))+[799]) sf_qu2.contrast_cut(50) sf_qu2.set_continua("segments") qu2 = sf_qu2.make_spectra() qu2con = qu2.meta.cont[0]*qu2.lmbd.mean() + qu2.meta.cont[1] qu2FeI = spc.splineline(wFeI, FeI, qu2.meta)
sf.set_continua("segments") sp = sf.make_spectra() # Hand picked flat area wFlat = [1179,1239]; cFlat = sp.lmbd[range(wFlat[0],wFlat[1]+1)].mean() def mystmutant(x,dist): x[:,wFlat[0]:wFlat[1]] = x[:,wFlat[0]:wFlat[1]]*dist return x # Range of line bottoms and variance. botrange = np.linspace(0.1,0.9,14) varrange = np.linspace(0.6,2.5,14) errors = [] #bot = 0.8 var = 1.5 for bot in botrange: norm = st.norm.pdf(np.linspace(-6,6,60),scale=var); norm = norm/norm.max() line = 1-bot*norm my = copy.deepcopy(sp) my.modify(lambda x: mystmutant(x,line)) print("Estimating errors for {}".format(bot)) Flat = spc.splineline(wFlat,cFlat,my.meta) mesFlat = Flat.measure(my) errors.append( er.err_spline_mes(mesFlat) ) errors = np.array(errors) intervalplot(errors,1-botrange,fwhm,"Line bottom","Equivalent width")
sf_qu1.frame_row_cut([0]+list(range(666,679))+[791]) sf_qu1.frame_col_cut([0,1,1465]) sf_qu1.contrast_cut(80) sf_qu1.set_continua("segments") lowNiIcut = -0.511135 # Read off from Ni I vel qu1sel = np.arange(0,3107) # Givin pretty pure cut qu1 = sf_qu1.make_spectra() qu1.modify(lambda x : x[qu1sel,:]) # Cutting qu1.meta.cont = (qu1.meta.cont[0][qu1sel], qu1.meta.cont[1][qu1sel]) # Updating continua qu1m = qu1[:,:].mean(axis=0) qu1con = qu1.meta.cont[0]*qu1.lmbd.mean() + qu1.meta.cont[1] # Define continua for qu1 series qu1NiI = spc.splineline(wNiI, NiI, qu1.meta);qu1NiI.recenter(qu1m) qu1CI = spc.splineline(wCI, CI, qu1.meta);qu1CI.recenter(qu1m) qu1C2 = spc.splineline(wC2, C2, qu1.meta);qu1C2.recenter(qu1m) qu1TiI = spc.splineline(wTiI, TiI, qu1.meta);qu1TiI.recenter(qu1m) qu1Myst = spc.splineline(wMyst, Myst, qu1.meta);qu1Myst.recenter(qu1m) qu1FeI = spc.splineline(wFeI, FeI, qu1.meta);qu1FeI.recenter(qu1m) qu1FeI2 = spc.splineline(wFeI2, FeI2, qu1.meta);qu1FeI2.recenter(qu1m) qu1lines = [qu1NiI,qu1CI,qu1C2,qu1TiI,qu1Myst,qu1FeI,qu1FeI2] regname = "6449" res = {} for i,line in enumerate(qu1lines): name ="{}_{}".format(line.name.split()[0],int(line.cent*10)) try: res[name] = line.measure(qu1) except Exception as err:
wSiI = [842, 867] wVI = [567, 595] wScII = [512, 548] wFeI2 = [136, 165] sf_qu1 = spc.SpectraFactory("data/5654_aS2", framerows=756, framecols=1480) sf_qu1.frame_row_cut([0] + list(range(653, 660)) + [755]) sf_qu1.frame_col_cut([0, 1479]) sf_qu1.contrast_cut(20) sf_qu1.set_continua("segments") qu1 = sf_qu1.make_spectra() # Do this before defining lines qu1m = qu1[:, :].mean(axis=0) qu1con = qu1.meta.cont[0] * qu1.lmbd.mean() + qu1.meta.cont[1] # Define continua for qu1 series qu1FeI = spc.splineline(wFeI, FeI, qu1.meta) qu1FeI.recenter(qu1m) # Define lines for qu1 series... qu1Myst = spc.splineline(wMyst, Myst, qu1.meta) qu1Myst.recenter(qu1m) qu1SiI = spc.splineline(wSiI, SiI, qu1.meta) qu1SiI.recenter(qu1m) qu1VI = spc.splineline(wVI, VI, qu1.meta) qu1VI.recenter(qu1m) qu1ScII = spc.splineline(wScII, ScII, qu1.meta) qu1ScII.recenter(qu1m) qu1FeI2 = spc.splineline(wFeI2, FeI2, qu1.meta) qu1FeI2.recenter(qu1m) qu1lines = [qu1FeI, qu1Myst, qu1SiI, qu1VI, qu1ScII, qu1FeI2] # ... and save in this list for qu1 sf_qu2 = spc.SpectraFactory("data/5654_cS2", framerows=756, framecols=1480)
wSiI = [839, 879] wH2O = [613, 637] wCo = [493, 534] wH2O2 = [8, 34] sf_qu1 = spc.SpectraFactory("data/6449_aS1", framerows=802, framecols=1514) sf_qu1.frame_row_cut([0] + list(range(668, 674)) + [801]) sf_qu1.frame_col_cut([0, 1513]) sf_qu1.contrast_cut(50) sf_qu1.set_continua("segments") qu1 = sf_qu1.make_spectra() qu1m = qu1[:, :].mean(axis=0) qu1con = qu1.meta.cont[0] * qu1.lmbd.mean() + qu1.meta.cont[1] # Define continua for qu1 series qu1Myst = spc.splineline(wMyst, Myst, qu1.meta) qu1Myst.recenter(qu1m) # Define lines for qu1 series... qu1Ca = spc.splineline(wCa, Ca, qu1.meta) qu1Ca.recenter(qu1m) qu1Blnd = spc.splineline(wBlnd, Blnd, qu1.meta) qu1Blnd.recenter(qu1m) qu1SiI = spc.splineline(wSiI, SiI, qu1.meta) qu1SiI.recenter(qu1m) qu1H2O = spc.splineline(wH2O, H2O, qu1.meta) qu1H2O.recenter(qu1m) qu1Co = spc.splineline(wCo, Co, qu1.meta) qu1Co.recenter(qu1m) qu1H2O2 = spc.splineline(wH2O2, H2O2, qu1.meta) qu1H2O2.recenter(qu1m) qu1lines = [qu1Myst, qu1Ca, qu1Blnd, qu1SiI, qu1H2O, qu1Co, qu1H2O2]
k = 0 newlines = [] regnames = ["5053", "5215", "5654", "6405", "6449"] for regname in regnames: rg = __import__(regname) for lin in rg.qu1lines: rawlin = rg.qu1m[lin.idx] leng = len(rawlin) sli = slice(k, leng + k) bak[:, sli] = bak[:, sli] * rawlin win, mlin, mspec = lin.deconstruct() mspec.lmbd = blmbd win[0], win[1] = sli.start, sli.stop newlines.append(spc.splineline(win, mlin, mspec)) k += leng + 1 bmean = bak.mean(axis=0) bspec = spc.Spectra("Background+lines", blmbd, bak, bmet) if False: rnds = np.random.randint(789, size=3) col = cm.YlGnBu([0.9, 0.4, 0.3]) for i, rnd in enumerate(rnds): pl.plot(bak[rnd, :], color=col[i], alpha=0.8) pl.xlim(349.79627678567999, 748.14957715358037) pl.ylim(0.5779066796740211, 1.1268191169272317) pl.ylabel("Relative intensity") pl.tick_params( axis="x", # changes apply to the x-axis
wCoI = [888,921]; wMyst = [591,623]; wCuI = [321,352]; wTiI = [170,199]; sf_qu1 = spc.SpectraFactory("data/5215_aS1",framerows=802,framecols=1476) sf_qu1.frame_row_cut([0]+list(range(671,679))+[801]) sf_qu1.frame_col_cut([0,1474,1475]) sf_qu1.contrast_cut(70) sf_qu1.set_continua("segments") qu1 = sf_qu1.make_spectra() qu1m = qu1[:,:].mean(axis=0) qu1con = qu1.meta.cont[0]*qu1.lmbd.mean() + qu1.meta.cont[1] # Define continua for qu1 series qu1FeI = spc.splineline(wFeI, FeI, qu1.meta);qu1FeI.recenter(qu1m) # Define lines for qu1 series... qu1TiII = spc.splineline(wTiII, TiII, qu1.meta);qu1TiII.recenter(qu1m) #qu1Blnd = spc.splineline(wBlnd,Blnd, qu1.meta);qu1Blnd.recenter(qu1m) qu1CoI = spc.splineline(wCoI, CoI, qu1.meta);qu1CoI.recenter(qu1m) qu1Myst = spc.splineline(wMyst, Myst, qu1.meta);qu1Myst.recenter(qu1m) qu1CuI = spc.splineline(wCuI, CuI, qu1.meta);qu1CuI.recenter(qu1m) qu1TiI = spc.splineline(wTiI, TiI, qu1.meta);qu1TiI.recenter(qu1m) #qu1lines = [qu1FeI,qu1TiII,qu1CoI,qu1Blnd,qu1Myst,qu1CuI,qu1TiI] qu1lines = [qu1FeI,qu1TiII,qu1CoI,qu1Myst,qu1CuI,qu1TiI] sf_qu2 = spc.SpectraFactory("data/5215_bS1",framerows=802,framecols=1476) sf_qu2.frame_row_cut([0]+list(range(669,674))+[801]) sf_qu2.frame_col_cut([0,1475]) sf_qu2.contrast_cut(50) sf_qu2.set_continua("segments")