Skip to content

Instantly share code, notes, and snippets.

View j-faria's full-sized avatar
🎯
Focusing

João Faria j-faria

🎯
Focusing
View GitHub Profile
@j-faria
j-faria / months.py
Created February 11, 2019 17:49
Month name to number
months = {
'Jan': 1,
'Feb': 2,
'Mar': 3,
'Apr': 4,
'May': 5,
'Jun': 6,
'Jul': 7,
'Aug': 8,
'Sep': 9,
@j-faria
j-faria / sinefit.py
Created January 31, 2019 11:26
Fit all the sines
from numpy import sin
from scipy import optimize
sine = lambda t, p: p[0] * sin(1. / p[1] * t + p[2]) + p[3]
sinefit = lambda t, y, ye, p0, **kwargs: optimize.leastsq(lambda p, t, y, ye: (sine(t, p) - y)/ye, p0, args=(t, y, ye), **kwargs)[0]
@j-faria
j-faria / natsort.py
Created January 29, 2019 17:42
Natural sort in Python
from re import split
from glob import glob
natsort = lambda s: [int(t) if t.isdigit() else t.lower() for t in split(r'(\d+)', s)]
files = sorted(glob(path), key=natsort)
@j-faria
j-faria / continuum.py
Last active January 9, 2019 17:22
Trying to emulate IRAF's noao.onedspec.continuum
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import LSQUnivariateSpline
def continuum(wave, flux, type='ratio', order=1, low_reject=2, high_reject=0,
niter=10):
m1 = np.ones_like(wave, dtype=np.bool) # use all points at first
m1 &= flux!=0 # but remove those where flux = 0
@j-faria
j-faria / gaussfit.py
Created December 12, 2018 21:20
Fit all the Gaussians
from scipy import optimize
gauss = lambda x,p: p[0]*exp(-(x-p[1])**2/(2*p[2]**2)) + p[3]
gaussfit = lambda x,y,p0: optimize.leastsq(lambda p, x, y: gauss(x, p) - y, p0, args=(x, y))[0]
@j-faria
j-faria / etc.py
Last active December 6, 2018 18:59
Query the ESPRESSO ETC
import re
import requests
from itertools import product
import numpy as np
url = 'https://www.eso.org/observing/etc/bin/simu/espresso'
form_data = {
'almanac_time_option': 'almanac_time_option_ut_time',
@j-faria
j-faria / commonfiles.sh
Created November 26, 2018 15:11
Find the common files between two directories
# directories a and b
comm -12 <(ls a) <(ls b)
@j-faria
j-faria / fitInvGamma.py
Created November 2, 2018 18:26
Find shape and scale of InvGamma distribution
# how to do the same as Michael Betancourt in
# https://betanalpha.github.io/assets/case_studies/gp_part3/part3.html
import numpy as np
from scipy.stats import invgamma
from scipy.optimize import minimize
f = lambda x, lims: \
(np.array([invgamma(a=x[0], scale=x[1]).cdf(lims[0]) - 0.01,
invgamma(a=x[0], scale=x[1]).sf(lims[1]) - 0.01])**2
@j-faria
j-faria / consts.py
Created August 29, 2018 18:30
How to get those constants in the exoplanet RV amplitude / mass equations!
import astropy.constants as c
import astropy.units as u
from math import pi
C = (2*pi*c.G)**(1/3)
# K [m/s] = C1 ....
C1 = C.to( (u.meter/u.second) * u.year**(1/3.) * (1/u.M_jup) * u.M_sun**(2/3.) ).value
# mp sini [Mjup] = C2 ....
@j-faria
j-faria / parameters_torres.py
Last active May 7, 2019 14:48
Calculate stellar mass and radius using the Torres calibration
import numpy as np
try: # numba will provide a ~2x speedup
from numba import jit
except ImportError: # but we can do without it
jit = lambda fn: fn
@jit
def massTorres(teff, erteff, logg, erlogg, feh, erfeh,
ntrials=10000, corrected=True, add_intrinsic=True):
"""