def generate_lc(self, footprint="wide"): timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(self.lc_duration) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = int(floor(timer.nsteps())) # set up the parameters for flares numdays = 0 while numdays < nsteps: starttime = numdays + np.random.exponential(1/self.flareRate) A = np.random.pareto(1)+5*float(self.rms) tau1 = random.uniform(0.5,5) tau2 = random.uniform(10,60) self.flares.append([A,tau1,tau2,starttime]) numdays = starttime for i in range(nsteps): t = timer.get_time() self.time.append(t) if t == 0: self.flux.append(0) else: self.flux.append(self.makeFlares(t))
def generate_lc(self, footprint="wide"): timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(self.lc_duration) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = int(floor(timer.nsteps())) # set up the parameters for flares numdays = 0 while numdays < nsteps: randtime = np.random.exponential(1/self.flareRate) starttime = numdays + randtime flareType = random.randint(1,3) # Fast rise exponential decay type flare if flareType == 1: A = np.random.pareto(1)+5*float(self.rms) tau1 = random.uniform(0.5,2) tau2 = random.uniform(10,40) self.flares.append([1,A,tau1,tau2,starttime]) # Flare forest if flareType == 2: A = np.random.pareto(1)+5*float(self.rms) numflares = random.randint(4,10) smallflares = [] for i in range(numflares): sflareA = A/random.randint(2,10) sflaret = i*randtime/10 smallflares.append([sflareA,sflaret]) self.flares.append([2,A,smallflares,starttime]) # one flare in another broad flare if flareType == 3: A1 = np.random.pareto(1)+5*float(self.rms) A2 = A1/random.uniform(2,4) t2 = randtime/random.uniform(4,8) t1 = randtime/random.uniform(10,15) deltat = randtime/random.uniform(1,10) self.flares.append([3,A1,A2,t1,t2,deltat,starttime]) numdays = starttime for i in range(nsteps): t = timer.get_time() self.time.append(t) if t == 0: self.flux.append(0) else: self.flux.append(self.makeFlares(t))
def generateNoise(fnum, numpoints, footprint, rms): timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(numpoints) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = timer.nsteps() fname = "Noise_" + str(fnum) + ".data" f = open(fname, "w") for i in range(nsteps): writetime = str(timer.get_time()) writeflux = str(getnoise(rms)) f.write(writetime + "\t" + writeflux + "\n")
def generateNoise(fnum, numpoints, footprint, rms): timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(numpoints) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = timer.nsteps() fname = 'Noise_' + str(fnum) + '.data' f = open(fname, 'w') for i in range(nsteps): writetime = str(timer.get_time()) writeflux = str(getnoise(rms)) f.write(writetime + '\t' + writeflux + '\n')
def generate_lc(self, footprint): timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(self.lc_duration) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = int(floor(timer.nsteps())) for i in range(nsteps): t = timer.get_time() self.time.append(t) if t == 0: self.flux.append(0) else: self.flux.append(self.fy(t))
def generate_lc(self, footprint): # Constants h = 6.62e-34 # Planck's constant k = 1.38e-23 # Boltzman's constant v = 14000000 # Freq in Hz Te = 10000 # Temperature in K M = random.randrange(10,50)*1e-5*2e30 c = 3e8 # Speed of light d = random.randrange(50,1500)*3e16 # in metres v2 = random.uniform(1,10)*10**random.randrange(7,9)# metres per sec v1 = v2*random.uniform(0.1,0.5) # metres per sec # define the functions we will use F = (1/2.33e-24)**2*exp(-h*v/(k*Te))*(M/(4*pi))**2*(5.4e-39*Te**-0.5*1.38*Te**0.16*(v/1e9)**-0.11) G = lambda r,a: (1/a**2)*(sqrt(r**2-a**2)/r**2 + (1/a)*acos(a/r)) Bv = (2*h*v**3/c**2)/(exp(h*v/(k*Te))-1) tau1 = lambda r1, r2, a: (F/Bv)*(G(r2,a)-G(r1,a))/(r2-r1)**2 tau2 = lambda r1, r2, a: (F/Bv)*G(r2,a)/(r2-r1)**2 timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(self.lc_duration) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = int(floor(timer.nsteps())) for i in range(nsteps): t = timer.get_time() self.time.append(t) if t == 0: self.flux.append(0) else: tsecs = 60*60*24*t r1 = v1*tsecs r2 = v2*tsecs Sv1 = lambda a: (2*pi*Bv/d**2)*a*(1-exp(-1*tau1(r1,r2,a))) Sv2 = lambda a: (2*pi*Bv/d**2)*a*(1-exp(-1*tau2(r1,r2,a))) S1, S1err = integrate.quad(Sv1, 0, r1) S2, S2err = integrate.quad(Sv2, r1, r2) #print "Time: " + str(t) + " Flux" + str((S1+S2)/10e-29) self.flux.append((S1+S2)/10e-29) # change to mJy
def generate_lc(self, theta_b=1.4, theta_l=5, footprint="wide"): #nsteps = 518400 # 2 * 30 * 24 * 60 * 60 / 10 (10 seconds) timer = myutils.timestep() timer.set_start_time(0) timer.set_end_time(self.event_duration) timer.set_increment(1) timer.make_timeseries(footprint) nsteps = int(floor(timer.nsteps())) xmin = -10 xmax = 10 dx = (xmax - xmin)/float(nsteps) d = xmin tmin = 0 tmax = self.event_duration #dt = (tmax - tmin)/float(nsteps) for i in range(nsteps): t = timer.get_time() amp = self.caustic(d, theta_b, theta_l) self.angle.append(d) self.time.append(t) self.flux.append(amp) d += dx # Fill the rest of the lightcurve with noise timer.set_end_time(self.lc_duration) timer.make_timeseries(footprint) # Go to the last recorded time array position timer.set_curtime(nsteps) t = timer.get_time() while(t > 0): self.time.append(t) self.flux.append(1) t = timer.get_time()