diff --git a/data/single_spectra.h5 b/data/single_spectra.h5 deleted file mode 100644 index 41eee3e..0000000 Binary files a/data/single_spectra.h5 and /dev/null differ diff --git a/data/single_spectra_with_synthphot.h5 b/data/singles_230801.h5 similarity index 57% rename from data/single_spectra_with_synthphot.h5 rename to data/singles_230801.h5 index 28328e0..d99f0da 100644 Binary files a/data/single_spectra_with_synthphot.h5 and b/data/singles_230801.h5 differ diff --git a/data/standards.h5 b/data/standards.h5 deleted file mode 100644 index d265371..0000000 Binary files a/data/standards.h5 and /dev/null differ diff --git a/data/standards_230801.h5 b/data/standards_230801.h5 new file mode 100644 index 0000000..f6b8ab8 Binary files /dev/null and b/data/standards_230801.h5 differ diff --git a/data/wavegrid.npy b/data/wavegrid.npy deleted file mode 100644 index f4d6119..0000000 Binary files a/data/wavegrid.npy and /dev/null differ diff --git a/data/wavegrid_230801.csv b/data/wavegrid_230801.csv new file mode 100644 index 0000000..87981a8 --- /dev/null +++ b/data/wavegrid_230801.csv @@ -0,0 +1,409 @@ +9.012939333915710449e-01 +9.047135114669799805e-01 +9.081512093544006348e-01 +9.116069078445434570e-01 +9.150804877281188965e-01 +9.185718297958374023e-01 +9.220807552337646484e-01 +9.256072044372558594e-01 +9.291508793830871582e-01 +9.327117800712585449e-01 +9.362896680831909180e-01 +9.398844242095947266e-01 +9.434958696365356445e-01 +9.471238851547241211e-01 +9.507682323455810547e-01 +9.544287919998168945e-01 +9.581053853034973145e-01 +9.617978334426879883e-01 +9.655060172080993652e-01 +9.692296385765075684e-01 +9.729686379432678223e-01 +9.767227768898010254e-01 +9.804918169975280762e-01 +9.842756986618041992e-01 +9.880741238594055176e-01 +9.918869733810424805e-01 +9.957140684127807617e-01 +9.995551109313964844e-01 +1.003409981727600098e+00 +1.007278442382812500e+00 +1.011160373687744141e+00 +1.015055537223815918e+00 +1.018963694572448730e+00 +1.022884726524353027e+00 +1.026818394660949707e+00 +1.030764341354370117e+00 +1.034722685813903809e+00 +1.038692951202392578e+00 +1.042674899101257324e+00 +1.046668648719787598e+00 +1.050673604011535645e+00 +1.054689884185791016e+00 +1.058717012405395508e+00 +1.062754988670349121e+00 +1.066803455352783203e+00 +1.070862293243408203e+00 +1.074931263923645020e+00 +1.079010128974914551e+00 +1.083098769187927246e+00 +1.087196826934814453e+00 +1.091304183006286621e+00 +1.095420718193054199e+00 +1.099545955657958984e+00 +1.103680014610290527e+00 +1.107822418212890625e+00 +1.111973166465759277e+00 +1.116131782531738281e+00 +1.120298385620117188e+00 +1.124472498893737793e+00 +1.128654003143310547e+00 +1.132842779159545898e+00 +1.137038588523864746e+00 +1.141241073608398438e+00 +1.145450234413146973e+00 +1.149665713310241699e+00 +1.153887271881103516e+00 +1.158114910125732422e+00 +1.162348270416259766e+00 +1.166587233543395996e+00 +1.170831561088562012e+00 +1.175081014633178711e+00 +1.179335474967956543e+00 +1.183594703674316406e+00 +1.187858462333679199e+00 +1.192126631736755371e+00 +1.196398973464965820e+00 +1.200675249099731445e+00 +1.204955339431762695e+00 +1.209239125251770020e+00 +1.213526248931884766e+00 +1.217816591262817383e+00 +1.222110033035278320e+00 +1.226406335830688477e+00 +1.230705261230468750e+00 +1.235006690025329590e+00 +1.239310503005981445e+00 +1.243616342544555664e+00 +1.247924208641052246e+00 +1.252233862876892090e+00 +1.256545066833496094e+00 +1.260857701301574707e+00 +1.265171647071838379e+00 +1.269486665725708008e+00 +1.273802638053894043e+00 +1.278119325637817383e+00 +1.282436609268188477e+00 +1.286754369735717773e+00 +1.291072368621826172e+00 +1.295390486717224121e+00 +1.299708485603332520e+00 +1.304026365280151367e+00 +1.308343887329101562e+00 +1.312660813331604004e+00 +1.316977143287658691e+00 +1.321292638778686523e+00 +1.325607299804687500e+00 +1.329920768737792969e+00 +1.334232926368713379e+00 +1.338543772697448730e+00 +1.342853188514709473e+00 +1.347160816192626953e+00 +1.351466655731201172e+00 +1.355770587921142578e+00 +1.360072493553161621e+00 +1.364372253417968750e+00 +1.368669629096984863e+00 +1.372964620590209961e+00 +1.377256989479064941e+00 +1.381546735763549805e+00 +1.385833621025085449e+00 +1.390117645263671875e+00 +1.394398570060729980e+00 +1.398676395416259766e+00 +1.402950882911682129e+00 +1.407222151756286621e+00 +1.411489844322204590e+00 +1.415753960609436035e+00 +1.420014381408691406e+00 +1.424270987510681152e+00 +1.428523778915405273e+00 +1.432772517204284668e+00 +1.437017202377319336e+00 +1.441257715225219727e+00 +1.445494055747985840e+00 +1.449725866317749023e+00 +1.453953385353088379e+00 +1.458176255226135254e+00 +1.462394595146179199e+00 +1.466608285903930664e+00 +1.470817089080810547e+00 +1.475021123886108398e+00 +1.479220151901245117e+00 +1.483414173126220703e+00 +1.487603187561035156e+00 +1.491787075996398926e+00 +1.495965719223022461e+00 +1.500138998031616211e+00 +1.504307031631469727e+00 +1.508469700813293457e+00 +1.512626767158508301e+00 +1.516778469085693359e+00 +1.520924448966979980e+00 +1.525064826011657715e+00 +1.529199481010437012e+00 +1.533328413963317871e+00 +1.537451624870300293e+00 +1.541568875312805176e+00 +1.545680284500122070e+00 +1.549785852432250977e+00 +1.553885340690612793e+00 +1.557978749275207520e+00 +1.562066197395324707e+00 +1.566147446632385254e+00 +1.570222616195678711e+00 +1.574291706085205078e+00 +1.578354477882385254e+00 +1.582411050796508789e+00 +1.586461305618286133e+00 +1.590505361557006836e+00 +1.594542980194091797e+00 +1.598574399948120117e+00 +1.602599263191223145e+00 +1.606617927551269531e+00 +1.610630035400390625e+00 +1.614635705947875977e+00 +1.618635058403015137e+00 +1.622627854347229004e+00 +1.626614093780517578e+00 +1.630594015121459961e+00 +1.634567260742187500e+00 +1.638534069061279297e+00 +1.642494320869445801e+00 +1.646448016166687012e+00 +1.650395154953002930e+00 +1.654335737228393555e+00 +1.658269762992858887e+00 +1.662197351455688477e+00 +1.666118264198303223e+00 +1.670032620429992676e+00 +1.673940420150756836e+00 +1.677841544151306152e+00 +1.681736230850219727e+00 +1.685624361038208008e+00 +1.689505934715270996e+00 +1.693380832672119141e+00 +1.697249293327331543e+00 +1.701111197471618652e+00 +1.704966545104980469e+00 +1.708815455436706543e+00 +1.712657809257507324e+00 +1.716493606567382812e+00 +1.720322966575622559e+00 +1.724145889282226562e+00 +1.727962374687194824e+00 +1.731772303581237793e+00 +1.735575914382934570e+00 +1.739372968673706055e+00 +1.743163704872131348e+00 +1.746948122978210449e+00 +1.750726103782653809e+00 +1.754497766494750977e+00 +1.758263111114501953e+00 +1.762022137641906738e+00 +1.765774846076965332e+00 +1.769521355628967285e+00 +1.773261547088623047e+00 +1.776995539665222168e+00 +1.780723333358764648e+00 +1.784445047378540039e+00 +1.788160562515258789e+00 +1.791869878768920898e+00 +1.795573115348815918e+00 +1.799270391464233398e+00 +1.802961468696594238e+00 +1.806646585464477539e+00 +1.810325741767883301e+00 +1.813998937606811523e+00 +1.817666053771972656e+00 +1.821327328681945801e+00 +1.824982762336730957e+00 +1.828632235527038574e+00 +1.832275986671447754e+00 +1.835913896560668945e+00 +1.839545965194702148e+00 +1.843172311782836914e+00 +1.846792936325073242e+00 +1.850407838821411133e+00 +1.854017138481140137e+00 +1.857620716094970703e+00 +1.861218690872192383e+00 +1.864811062812805176e+00 +1.868397951126098633e+00 +1.871979236602783203e+00 +1.875555157661437988e+00 +1.879125475883483887e+00 +1.882690429687500000e+00 +1.886249899864196777e+00 +1.889804005622863770e+00 +1.893352746963500977e+00 +1.896896123886108398e+00 +1.900434255599975586e+00 +1.903967022895812988e+00 +1.907494544982910156e+00 +1.911016941070556641e+00 +1.914534091949462891e+00 +1.918045997619628906e+00 +1.921552777290344238e+00 +1.925054430961608887e+00 +1.928551077842712402e+00 +1.932042598724365234e+00 +1.935528993606567383e+00 +1.939010500907897949e+00 +1.942486882209777832e+00 +1.945958256721496582e+00 +1.949424743652343750e+00 +1.952886343002319336e+00 +1.956342935562133789e+00 +1.959794640541076660e+00 +1.963241577148437500e+00 +1.966683626174926758e+00 +1.970120787620544434e+00 +1.973553061485290527e+00 +1.976980686187744141e+00 +1.980403423309326172e+00 +1.983821511268615723e+00 +1.987234830856323242e+00 +1.990643382072448730e+00 +1.994047164916992188e+00 +1.997446417808532715e+00 +2.000840902328491211e+00 +2.004230737686157227e+00 +2.007615804672241211e+00 +2.010996341705322266e+00 +2.014372348785400391e+00 +2.017743587493896484e+00 +2.021110296249389648e+00 +2.024472236633300781e+00 +2.027829885482788086e+00 +2.031182765960693359e+00 +2.034531116485595703e+00 +2.037874937057495117e+00 +2.041213989257812500e+00 +2.044548749923706055e+00 +2.047878980636596680e+00 +2.051204681396484375e+00 +2.054525613784790039e+00 +2.057842254638671875e+00 +2.061154365539550781e+00 +2.064461946487426758e+00 +2.067764997482299805e+00 +2.071063518524169922e+00 +2.074357509613037109e+00 +2.077646970748901367e+00 +2.080931901931762695e+00 +2.084212303161621094e+00 +2.087488174438476562e+00 +2.090759515762329102e+00 +2.094026565551757812e+00 +2.097288846969604492e+00 +2.100546598434448242e+00 +2.103799819946289062e+00 +2.107048511505126953e+00 +2.110292673110961914e+00 +2.113532304763793945e+00 +2.116767406463623047e+00 +2.119997978210449219e+00 +2.123223781585693359e+00 +2.126445055007934570e+00 +2.129661798477172852e+00 +2.132874011993408203e+00 +2.136081457138061523e+00 +2.139284372329711914e+00 +2.142482519149780273e+00 +2.145676136016845703e+00 +2.148864984512329102e+00 +2.152049064636230469e+00 +2.155228614807128906e+00 +2.158403635025024414e+00 +2.161573648452758789e+00 +2.164738893508911133e+00 +2.167899608612060547e+00 +2.171055555343627930e+00 +2.174206495285034180e+00 +2.177352905273437500e+00 +2.180494308471679688e+00 +2.183630943298339844e+00 +2.186762809753417969e+00 +2.189889907836914062e+00 +2.193011999130249023e+00 +2.196129083633422852e+00 +2.199241399765014648e+00 +2.202348947525024414e+00 +2.205451488494873047e+00 +2.208549022674560547e+00 +2.211641550064086914e+00 +2.214729070663452148e+00 +2.217811822891235352e+00 +2.220889329910278320e+00 +2.223961830139160156e+00 +2.227029561996459961e+00 +2.230092048645019531e+00 +2.233149290084838867e+00 +2.236201763153076172e+00 +2.239248991012573242e+00 +2.242291212081909180e+00 +2.245328187942504883e+00 +2.248360157012939453e+00 +2.251386880874633789e+00 +2.254408597946166992e+00 +2.257425069808959961e+00 +2.260436296463012695e+00 +2.263442516326904297e+00 +2.266443490982055664e+00 +2.269439220428466797e+00 +2.272429943084716797e+00 +2.275415182113647461e+00 +2.278395414352416992e+00 +2.281370639801025391e+00 +2.284340381622314453e+00 +2.287304878234863281e+00 +2.290264368057250977e+00 +2.293218612670898438e+00 +2.296167612075805664e+00 +2.299111604690551758e+00 +2.302050113677978516e+00 +2.304983854293823242e+00 +2.307912111282348633e+00 +2.310835361480712891e+00 +2.313753604888916016e+00 +2.316666603088378906e+00 +2.319574356079101562e+00 +2.322477340698242188e+00 +2.325375080108642578e+00 +2.328267812728881836e+00 +2.331155776977539062e+00 +2.334038496017456055e+00 +2.336916446685791016e+00 +2.339789390563964844e+00 +2.342657566070556641e+00 +2.345520973205566406e+00 +2.348379373550415039e+00 +2.351233243942260742e+00 +2.354082345962524414e+00 +2.356926679611206055e+00 +2.359766721725463867e+00 +2.362601995468139648e+00 +2.365432977676391602e+00 +2.368259429931640625e+00 +2.371081590652465820e+00 +2.373899459838867188e+00 +2.376713275909423828e+00 +2.379522800445556641e+00 +2.382328271865844727e+00 +2.385129928588867188e+00 +2.387927532196044922e+00 +2.390721559524536133e+00 +2.393511772155761719e+00 +2.396298408508300781e+00 +2.399081707000732422e+00 diff --git a/spectral_binaries/core.py b/spectral_binaries/core.py index f32c547..7c770e5 100644 --- a/spectral_binaries/core.py +++ b/spectral_binaries/core.py @@ -28,13 +28,16 @@ # ----------------------------------------------------------------------------------------------------- -VERSION = "2023.03.13" +VERSION = "2023.08.01" __version__ = VERSION GITHUB_URL = "https://github.com/Ultracool-Machine-Learning/spectral_binaries" CODE_PATH = os.path.dirname(os.path.abspath(__file__)) DATA_FOLDER = CODE_PATH + "/../data/" ERROR_CHECKING = False -VEGAFILE = "vega_kurucz.txt" +#VEGAFILE = "vega_kurucz.txt" +STANDARDS_FILE = 'standards_230801.h5' +SINGLES_FILE = 'singles_230801.h5' +#BINARIES_FILE = TBD # Display on load in. @@ -44,248 +47,123 @@ # print('If you make use of any features of this toolkit for your research, please remember to cite the paper:') # print('\n{}; Bibcode: {}\n'.format(CITATION,BIBCODE)) print( - "Please report any errors are feature requests to our GitHub page, {}\n\n".format( + "Please report any errors are feature requests to our GitHub page:\n{}\n\n".format( GITHUB_URL ) ) -# Constants and information. +################## CONSTANTS ################## absmag_relations = { - "filippazzo2015": { - "sptoffset": 10, - "filters": { - "2MASS_J": { - "fitunc": 0.4, - "range": [16.0, 39.0], - "coeff": [3.478e-05, -0.002684, 0.07771, -1.058, 7.157, -8.35], - }, - "WISE_W2": { - "fitunc": 0.4, - "range": [16.0, 39.0], - "coeff": [ - 8.19e-06, - -0.0006938, - 0.02283, - -0.3655, - 3.032, - -0.5043, - ], - }, - }, - }, - "dupuy2012": { - "sptoffset": 10, - "filters": { - "MKO_Y": { - "fitunc": 0.4, - "range": [16.0, 39.0], - "coeff": [ - -2.52638e-06, - 0.000285027, - -0.0126151, - 0.279438, - -3.26895, - 19.5444, - -35.156, - ], - }, - "MKO_J": { - "fitunc": 0.39, - "range": [16.0, 39.0], - "coeff": [ - -1.9492e-06, - 0.000227641, - -0.0103332, - 0.232771, - -2.74405, - 16.3986, - -28.3129, - ], - }, - "MKO_H": { - "fitunc": 0.38, - "range": [16.0, 39.0], - "coeff": [ - -2.24083e-06, - 0.000251601, - -0.011096, - 0.245209, - -2.85705, - 16.9138, - -29.7306, - ], - }, - "MKO_K": { - "fitunc": 0.4, - "range": [16.0, 39.0], - "coeff": [ - -1.04935e-06, - 0.000125731, - -0.00584342, - 0.135177, - -1.6393, - 10.1248, - -15.22, - ], - }, - "MKO_LP": { - "fitunc": 0.28, - "range": [16.0, 39.0], - "coeff": [ - 0.0, - 0.0, - 5.46366e-05, - -0.00293191, - 0.0530581, - -0.196584, - 8.89928, - ], - }, - "2MASS_J": { - "fitunc": 0.4, - "range": [16.0, 39.0], - "coeff": [ - -7.84614e-07, - 0.00010082, - -0.00482973, - 0.111715, - -1.33053, - 8.16362, - -9.67994, - ], - }, - "2MASS_H": { - "fitunc": 0.4, - "range": [16.0, 39.0], - "coeff": [ - -1.11499e-06, - 0.000129363, - -0.00580847, - 0.129202, - -1.5037, - 9.00279, - -11.7526, - ], - }, - "2MASS_KS": { - "fitunc": 0.43, - "range": [16.0, 39.0], - "coeff": [ - 0.000106693, - -0.00642118, - 0.134163, - -0.867471, - 11.0114, - ], - }, - "IRAC_CH1": { - "fitunc": 0.29, - "range": [16.0, 39.0], - "coeff": [ - 6.50191e-05, - -0.00360108, - 0.0691081, - -0.335222, - 9.3422, - ], - }, - "IRAC_CH2": { - "fitunc": 0.22, - "range": [16.0, 39.0], - "coeff": [ - 5.82107e-05, - -0.00363435, - 0.0765343, - -0.439968, - 9.73946, - ], - }, - "IRAC_CH3": { - "fitunc": 0.32, - "range": [16.0, 39.0], - "coeff": [ - 0.000103507, - -0.00622795, - 0.129019, - -0.90182, - 11.0834, - ], - }, - "IRAC_CH4": { - "fitunc": 0.27, - "range": [16.0, 39.0], - "coeff": [ - 6.89733e-05, - -0.00412294, - 0.0843465, - -0.529595, - 9.97853, - ], - }, - "WISE_W1": { - "fitunc": 0.39, - "range": [16.0, 39.0], - "coeff": [ - 1.5804e-05, - -0.000333944, - -0.00438105, - 0.355395, - 7.14765, - ], - }, - "WISE_W2": { - "fitunc": 0.35, - "range": [16.0, 39.0], - "coeff": [ - 1.78555e-05, - -0.000881973, - 0.0114325, - 0.192354, - 7.46564, - ], - }, - "WISE_W3": { - "fitunc": 0.43, - "range": [16.0, 39.0], - "coeff": [ - 2.37656e-05, - -0.00128563, - 0.020174, - 0.0664242, - 7.81181, - ], - }, - "WISE_W4": { - "fitunc": 0.76, - "range": [16.0, 39.0], - "coeff": [-0.00216042, 0.11463, 7.78974], - }, - }, - }, -} - -# read in standards -df = pd.read_hdf(DATA_FOLDER + "standards.h5") -STANDARDS = { - "WAVE": df["WAVEGRID"].iloc[0], - "SPT": df["SPT"], - "FLUX": df["FLUX"], - "UNC": df["UNCERTAINTY"], -} -wavegrid = STANDARDS["WAVE"] -# STANDARDS = {'WAVE': df['wavegrid'].iloc[0],'STDS':{}} -# for i in range(len(df)): STANDARDS['STDS'][df['sptype'].iloc[i]] = df['interpolated_flux'].iloc[i] + 'filippazzo2015': {'altname': ['filippazzo','filippazzo15','fillippazzo','filipazo','filippazo','fil15'],'bibcode': '2015ApJ...810..158F', 'sptoffset': 10, 'method': 'polynomial', 'filters': { + '2MASS_J': {'fitunc': 0.40, 'range': [16., 39.], 'coeff': [3.478e-5, -2.684e-3, 7.771e-2, -1.058, 7.157, -8.350]}, + }}, + 'dupuy2012': {'altname': ['dupuy','dupuy12','dup12'], 'bibcode': '2012ApJS..201...19D', 'sptoffset': 10, 'method': 'polynomial', 'filters': { + 'MKO_J': {'fitunc' : 0.39, 'range' : [16., 39.], 'coeff' : [-.00000194920, .000227641, -.0103332, .232771, -2.74405, 16.3986, -28.3129]}, + 'MKO_H': {'fitunc': 0.38, 'range' : [16., 39.], 'coeff': [-.00000224083, .000251601, -.0110960, .245209, -2.85705, 16.9138, -29.7306]}, + 'MKO_K': {'fitunc': 0.40, 'range' : [16., 39.], 'coeff': [-.00000104935, .000125731, -.00584342, .135177, -1.63930, 10.1248, -15.2200]}, + '2MASS_J': {'fitunc': 0.40, 'range': [16., 39.], 'coeff': [-.000000784614, .000100820, -.00482973, .111715, -1.33053, 8.16362, -9.67994]}, + '2MASS_H': {'fitunc': 0.40, 'range': [16., 39.], 'coeff': [-.00000111499, .000129363, -.00580847, .129202, -1.50370, 9.00279, -11.7526]}, + '2MASS_KS': {'fitunc': 0.43, 'range':[16., 39.], 'coeff': [1.06693e-4, -6.42118e-3, 1.34163e-1, -8.67471e-1, 1.10114e1]}, + }}} + + +################## INITIALIZE SPECTRAL TEMPLATES ################## + +# NOTE: WILL NEED TO FIX THE WAVEGRID VARIABLE + +WAVEGRID = [] +STANDARDS = {} +SINGLES = {} +BINARIES = {} + +def initialize_templates(file='',container={},verbose=False,wcol='WAVE',fcol='FLUX',ucol='UNCERTAINTY',lcol='LABEL',additional=[]): + if os.path.exists(file) == False: raise ValueError('Cannot find data file {}'.format(file)) + if file.split('.')[-1]=='h5': df = pd.read_hdf(file) + elif 'xls' in file.split('.')[-1]: df = pd.read_excel(file) + elif 'csv' in file.split('.')[-1]: df = pd.read_ascii(file,delim=',') + elif 'txt' in file.split('.')[-1]: df = pd.read_ascii(file,delim='\s+') + else: raise ValueError('Do not recognize file format for {} - should be h5,xls/xlsx,csv, or txt'.format(file)) + + for cname in [fcol,ucol,lcol,wcol]: + if cname not in list(df.columns): raise ValueError('Cannot find column {} in file'.format(cname)) + container['WAVE'] = df[wcol].iloc[0] + container['FLUX'] = df[fcol] + container['UNCERTAINTY'] = df[ucol] + container['LABEL'] = df[lcol] + if len(additional)>0: + for a in additional: + if a in list(df.columns): container[a] = df[a] + + return + +def initialize_standards(): + initialize_templates(file=DATA_FOLDER+STANDARDS_FILE,container=STANDARDS,lcol='SPT') + return + +def initialize_singles(): + initialize_templates(file=DATA_FOLDER+SINGLES_FILE,container=SINGLES,lcol='SPT') + return + +# WRITE WHEN WE HAVE A BINARIES FILE UPLOADED +# def initialize_binaries(): +# BINARIES = initialize_templates(file=DATA_FOLDER+BINARIES_FILE) + + + +# NOTE: THIS FUNCTION IS PROBLEMATIC AS IT RELIES ON FILES NOT INCLUDED IN DISTRIBUTION +# BETTER TO USE ABOVE FUNCTION FOR A GENERAL FILE +# def initialize_binaries(): +# bina_df = pd.read_hdf(r'C:/Users/juand/Research/h5_files/spectral_templates_aug3_normalized.h5', key='binaries') +# b_wavegrid = np.array(pd.read_hdf(r'C:/Users/juand/Research/h5_files/spectral_templates_aug3_normalized.h5', key='wavegrid')) +# interpol_flux=[] +# for j in range(len(bina_df)): +# a=[] +# for i in range(409): +# a.append(bina_df["flux_" + str(i)][j]) +# interpol_flux.append(a) +# bina_df["interpol_flux"]=interpol_flux +# bina_df = bina_df.loc[bina_df['primary_type']<=bina_df['secondary_type']] +# bina_df = bina_df.reset_index(drop=True) +# new_wave=wavegrid +# new_wave[-1]=b_wavegrid[-1] +# fluxlist=[] +# for i in range(len(bina_df)): +# fluxi=bina_df['interpol_flux'][i] +# nfluxi = interpolate_flux_wave(b_wavegrid, fluxi, wgrid=new_wave) +# fluxlist.append(nfluxi) +# bina_df['FLUX']=fluxlist +# BINARIES = { +# "WAVE": wavegrid, +# "PRIM": bina_df["primary_type"], +# "SECO": bina_df["secondary_type"], +# "FLUX": bina_df["FLUX"], +# } +# return + + +# REMOVED AND PUT INTO INITIALIZE FUNCTION +# # read in standards +# df = pd.read_hdf(DATA_FOLDER + "standards.h5") +# STANDARDS = { +# "WAVE": df["WAVEGRID"].iloc[0], +# "SPT": df["SPT"], +# "FLUX": df["FLUX"], +# "UNC": df["UNCERTAINTY"], +# } +# wavegrid = STANDARDS["WAVE"] +# # STANDARDS = {'WAVE': df['wavegrid'].iloc[0],'STDS':{}} +# # for i in range(len(df)): STANDARDS['STDS'][df['sptype'].iloc[i]] = df['interpolated_flux'].iloc[i] # needed for binariesClassificationPrecision function +# ADAM - THIS NEEDS TO BE PUT INTO THAT SCRIPT, NOT HERE dic_b = {'primary_type': [i for i in list(range(16,40)) for j in range(16,40)], 'secondary_type': [i for j in range(16,40) for i in list(range(16,40))]} types_df = pd.DataFrame(dic_b) types_df = types_df.loc[types_df['primary_type']<=types_df['secondary_type']].reset_index(drop=True) types_count = types_df.groupby('secondary_type').primary_type.value_counts().unstack() -BINARIES = {} # Basic spectral analysis functions. @@ -295,10 +173,6 @@ def interpolate_flux_wave( wave: Sequence, flux: Sequence, wgrid: Sequence, verbose: bool = True ): """ - filterMag function requires interpolation to different wavelengths. - - Function to interpolate the flux from the stars to the wavegrid we are working on. - Parameters ---------- wave : Sequence @@ -492,33 +366,6 @@ def typeToNum(inp): # chi.append(chisquared) # return standard_types[np.argmin(chi)] -def initialize_binaries(): - bina_df = pd.read_hdf(r'C:/Users/juand/Research/h5_files/spectral_templates_aug3_normalized.h5', key='binaries') - b_wavegrid = np.array(pd.read_hdf(r'C:/Users/juand/Research/h5_files/spectral_templates_aug3_normalized.h5', key='wavegrid')) - interpol_flux=[] - for j in range(len(bina_df)): - a=[] - for i in range(409): - a.append(bina_df["flux_" + str(i)][j]) - interpol_flux.append(a) - bina_df["interpol_flux"]=interpol_flux - bina_df = bina_df.loc[bina_df['primary_type']<=bina_df['secondary_type']] - bina_df = bina_df.reset_index(drop=True) - new_wave=wavegrid - new_wave[-1]=b_wavegrid[-1] - fluxlist=[] - for i in range(len(bina_df)): - fluxi=bina_df['interpol_flux'][i] - nfluxi = interpolate_flux_wave(b_wavegrid, fluxi, wgrid=new_wave) - fluxlist.append(nfluxi) - bina_df['FLUX']=fluxlist - BINARIES = { - "WAVE": wavegrid, - "PRIM": bina_df["primary_type"], - "SECO": bina_df["secondary_type"], - "FLUX": bina_df["FLUX"], - } - return ## NOTE: NEED OPTIONAL PLOTTING, ALSO RETURN NOT JUST SPT BUT ALSO SCALE FACTOR AND CHI2 @@ -589,8 +436,8 @@ def fast_classify( msk[ np.where( np.logical_or( - np.logical_and(wavegrid > 1.35, wavegrid < 1.42), - np.logical_and(wavegrid > 1.8, wavegrid < 1.95), + np.logical_and(WAVEGRID > 1.35, WAVEGRID < 1.42), + np.logical_and(WAVEGRID > 1.8, WAVEGRID < 1.95), ) ) ] = 0 @@ -1112,14 +959,14 @@ def filterMag(flux, unc, filt): fwave, ftrans = filterProfile(filt) # check that spectrum and filter cover the same wavelength ranges - if np.nanmax(fwave) < np.nanmin(wavegrid) or np.nanmin(fwave) > np.nanmax( - wavegrid + if np.nanmax(fwave) < np.nanmin(WAVEGRID) or np.nanmin(fwave) > np.nanmax( + WAVEGRID ): print("\nWarning: no overlap between spectrum and filter") return np.nan, np.nan - if np.nanmin(fwave) < np.nanmin(wavegrid) or np.nanmax(fwave) > np.nanmax( - wavegrid + if np.nanmin(fwave) < np.nanmin(WAVEGRID) or np.nanmax(fwave) > np.nanmax( + WAVEGRID ): print( "\nWarning: spectrum does not span full filter profile for the filter" @@ -1127,12 +974,12 @@ def filterMag(flux, unc, filt): # interpolate spectrum onto filter wavelength function wgood = np.where(~np.isnan(unc)) - if len(wavegrid[wgood]) > 0: + if len(WAVEGRID[wgood]) > 0: d = interpolate_flux_wave( - wavegrid[wgood], flux[wgood], wgrid=fwave + WAVEGRID[wgood], flux[wgood], wgrid=fwave ) # ,bounds_error=False,fill_value=0. n = interpolate_flux_wave( - wavegrid[wgood], unc[wgood], wgrid=fwave + WAVEGRID[wgood], unc[wgood], wgrid=fwave ) # ,bounds_error=False,fill_value=0. # catch for models else: @@ -1166,7 +1013,7 @@ def filterMag(flux, unc, filt): ) err = np.nanstd(result) - if len(wavegrid[wgood]) == 0: + if len(WAVEGRID[wgood]) == 0: err = 0.0 return val, err @@ -1241,8 +1088,8 @@ def combine_two_spex_spectra(flux1, unc1, flux2, unc2, name1="", name2=""): """ # Classify the given spectra - spt1 = fast_classify(wavegrid, flux1, unc1) - spt2 = fast_classify(wavegrid, flux2, unc2) + spt1 = fast_classify(WAVEGRID, flux1, unc1) + spt2 = fast_classify(WAVEGRID, flux2, unc2) # # get magnitudes of types # absj1 = typeToMag(spt1)[0] @@ -1257,7 +1104,7 @@ def combine_two_spex_spectra(flux1, unc1, flux2, unc2, name1="", name2=""): unc3 = unc1 + unc2 # Classify Result - spt3 = fast_classify(wavegrid, flux3, unc3) + spt3 = fast_classify(WAVEGRID, flux3, unc3) # FIX @@ -1266,9 +1113,9 @@ def combine_two_spex_spectra(flux1, unc1, flux2, unc2, name1="", name2=""): unc_standard = STANDARDS["UNC"][spt3 - 10] # normalize - flux1, unc1 = normalize(wavegrid, flux1, unc1) - flux2, unc2 = normalize(wavegrid, flux2, unc2) - flux3, unc3 = normalize(wavegrid, flux3, unc3) + flux1, unc1 = normalize(WAVEGRID, flux1, unc1) + flux2, unc2 = normalize(WAVEGRID, flux2, unc2) + flux3, unc3 = normalize(WAVEGRID, flux3, unc3) # diff diff = flux_standard - flux3 @@ -1281,18 +1128,19 @@ def combine_two_spex_spectra(flux1, unc1, flux2, unc2, name1="", name2=""): "secondary_type": spt2, "system_type": spt3, "system_interpolated_flux": interpolate_flux_wave( - wavegrid, flux3 + WAVEGRID, flux3 ).flatten(), "system_interpolated_noise": interpolate_flux_wave( - wavegrid, unc3 + WAVEGRID, unc3 ).flatten(), "difference_spectrum": interpolate_flux_wave( - wavegrid, np.abs(diff) + WAVEGRID, np.abs(diff) ).flatten(), "name": name, } +# THIS NEEDS TO BE FIXED TO ADAPT TO NEW TEMPLATES FORMAT def makeBinaryTemplates(stars_df: pd.DataFrame) -> pd.DataFrame: """Function to make binaries. @@ -1333,7 +1181,7 @@ def makeBinaryTemplates(stars_df: pd.DataFrame) -> pd.DataFrame: binary_diff.append(binary_dict["difference_spectrum"]) binary_flux.append(binary_dict["system_interpolated_flux"]) binary_unce.append(binary_dict["system_interpolated_noise"]) - binary_wave.append(stars_df.wavegrid[star1]) + binary_wave.append(stars_df.WAVEGRID[star1]) binary_type.append(binary_dict["system_type"]) primar_type.append(binary_dict["primary_type"]) second_type.append(binary_dict["secondary_type"]) @@ -1584,7 +1432,7 @@ def _addstars(df, target, mintype='', maxtype=38, undersample=False, undersample nflux, nunc = addNoise(flux, unc, scale=noisescale) nan_and_zeros = (len(nunc)-np.count_nonzero(nunc)) + (len(nunc)-np.count_nonzero(~np.isnan(nunc))) nunc = np.abs(nunc) - snr = measureSN(wavegrid, nflux, nunc) + snr = measureSN(WAVEGRID, nflux, nunc) new_df.loc[len(new_df.index)] = [nflux, nunc, snr, singles_snr.SPT[star], singles_snr.WAVEGRID[star], singles_snr.SPT_NUM[star], 'hig'] need -= 1 @@ -1610,7 +1458,7 @@ def _addstars(df, target, mintype='', maxtype=38, undersample=False, undersample nflux, nunc = addNoise(flux, unc, scale=noisescale) nan_and_zeros = (len(nunc)-np.count_nonzero(nunc)) + (len(nunc)-np.count_nonzero(~np.isnan(nunc))) nunc = np.abs(nunc) - snr = measureSN(wavegrid, nflux, nunc) + snr = measureSN(WAVEGRID, nflux, nunc) new_df.loc[len(new_df.index)] = [nflux, nunc, snr, singles_snr.SPT[star], singles_snr.WAVEGRID[star], singles_snr.SPT_NUM[star], 'mid'] need -= 1 @@ -1640,7 +1488,7 @@ def _addstars(df, target, mintype='', maxtype=38, undersample=False, undersample nflux, nunc = addNoise(flux, unc, scale=noisescale) nunc = np.abs(nunc) nan_and_zeros = (len(nunc)-np.count_nonzero(nunc)) + (len(nunc)-np.count_nonzero(~np.isnan(nunc))) - snr = measureSN(wavegrid, nflux, nunc) + snr = measureSN(WAVEGRID, nflux, nunc) new_df.loc[len(new_df)] = [nflux, nunc, snr, singles_snr.SPT[star], singles_snr.WAVEGRID[star], singles_snr.SPT_NUM[star], 'low'] need -= 1 @@ -1753,7 +1601,7 @@ def binaryCreation(singles_df, target, snr_range='low', fluxSeparate=False, diff combstar_dic = combine_two_spex_spectra(flux1, unc1, flux2, unc2) flux3 = np.array(combstar_dic["system_interpolated_flux"]) unc3 = np.array(combstar_dic["system_interpolated_noise"]) - snr3 = measureSN(wavegrid, flux3, unc3) + snr3 = measureSN(WAVEGRID, flux3, unc3) # check nans nanvalues=np.sum(np.isnan(flux3)) + np.sum(np.isnan(unc3)) + np.sum(np.isnan(snr3))