def __getTrace(self, data): """Trace orbit to the ionosphere **Belongs to**: :class:`rbspFp` **Args**: * **data**: a dictionnary containing ephemeris (with keys 'lat', 'lon', 'alt', 'time') """ import tsyganenko as ts import numpy as np fname = 'trace.{:%Y%m%d}.{:%Y%m%d}.dat'.format(self.sTime, self.eTime) try: trace = ts.tsygTrace(filename=fname) print 'Read tracing results...' except: print 'Tracing...' trace = ts.tsygTrace(data['lat'], data['lon'], data['alt'], datetime=data['time'], rmin=1.047) trace.save( fname ) self.lonNH = trace.lonNH self.latNH = trace.latNH self.lonSH = trace.lonSH self.latSH = trace.latSH self.times = trace.datetime # Mark apogees mins = np.r_[True, trace.rho[1:] >= trace.rho[:-1]] & np.r_[trace.rho[:-1] > trace.rho[1:], True] mins[0] = mins[-1] = False self.apogees = np.where(mins)[0]
def trace(date=None, fig=True): """ Trace RBSP footprints for a given date (python datetime object) of for all the available dates """ datapath = '/home/sebastien/Documents/code/rbsp/data/' # Read the data year, month, day, hour, minute, second, altA, latA, lonA = np.genfromtxt('data/orbitposA.dat', unpack=True, skiprows=1) dates = [] for y,m,d,h,mn,s in zip(year, month, day, hour, minute, second): dates.append( datetime( int(y),int(m),int(d),int(h),int(mn),int(s) ) ) datesA = np.array(dates) year, month, day, hour, minute, second, altB, latB, lonB = np.genfromtxt('data/orbitposB.dat', unpack=True, skiprows=1) dates = [] for y,m,d,h,mn,s in zip(year, month, day, hour, minute, second): dates.append( datetime( int(y),int(m),int(d),int(h),int(mn),int(s) ) ) datesB = np.array(dates) # Ganerate day-by-day array if not date: datesAll = np.concatenate((datesA, datesB)) un, inds = np.unique( [d.strftime('%Y%m%d') for d in datesAll], return_index=True ) dateIn = datesAll[inds] else: dateIn = [date] # Generate traces day-by-day for day in dateIn: print 'Tracing {}'.format(day.strftime('%Y-%b-%d')) # First A inds = [d.date()==day.date() for d in datesA] sdates = datesA[np.array(inds)] if len(sdates) >= 1: # trace points lats = latA[np.array(inds)] lons = lonA[np.array(inds)] rhos = altA[np.array(inds)] traceA = ts.tsygTrace(lats, lons, rhos, datetime=sdates, rmin=1.047) # Save traces traceA.save( datapath+'trace.{}.A.dat'.format(day.strftime('%Y%m%d')) ) # Then B inds = [d.date()==day.date() for d in datesB] sdates = datesB[np.array(inds)] if len(sdates) >= 1: # trace points lats = latB[np.array(inds)] lons = lonB[np.array(inds)] rhos = altB[np.array(inds)] traceB = ts.tsygTrace(lats, lons, rhos, datetime=sdates, rmin=1.047) # Save traces traceB.save( datapath+'trace.{}.B.dat'.format(day.strftime('%Y%m%d')) ) if fig: plot(traceA=traceA, traceB=traceB)
def __getTrace(self, data): """Trace orbit to the ionosphere Parameters ---------- data : dict a dictionnary containing ephemeris (with keys 'lat', 'lon', 'alt', 'time') Returns ------- Nothing Notes ----- Belongs to class rbspFp """ import tsyganenko as ts import numpy as np fname = 'trace.{:%Y%m%d}.{:%Y%m%d}.dat'.format(self.sTime, self.eTime) try: trace = ts.tsygTrace(filename=fname) logging.info('Read tracing results...') except: logging.info('Tracing...') trace = ts.tsygTrace(data['lat'], data['lon'], data['alt'], datetime=data['time'], rmin=1.047) trace.save(fname) self.lonNH = trace.lonNH self.latNH = trace.latNH self.lonSH = trace.lonSH self.latSH = trace.latSH self.times = trace.datetime # Mark apogees mins = np.r_[True, trace.rho[1:] >= trace.rho[:-1]] & np.r_[ trace.rho[:-1] > trace.rho[1:], True] mins[0] = mins[-1] = False self.apogees = np.where(mins)[0]
def __getTrace(self, data): """Trace orbit to the ionosphere Parameters ---------- data : dict a dictionnary containing ephemeris (with keys 'lat', 'lon', 'alt', 'time') Returns ------- Nothing Notes ----- Belongs to class rbspFp """ import tsyganenko as ts import numpy as np fname = 'trace.{:%Y%m%d}.{:%Y%m%d}.dat'.format(self.sTime, self.eTime) try: trace = ts.tsygTrace(filename=fname) logging.info('Read tracing results...') except: logging.info('Tracing...') trace = ts.tsygTrace(data['lat'], data['lon'], data['alt'], datetime=data['time'], rmin=1.047) trace.save( fname ) self.lonNH = trace.lonNH self.latNH = trace.latNH self.lonSH = trace.lonSH self.latSH = trace.latSH self.times = trace.datetime # Mark apogees mins = np.r_[True, trace.rho[1:] >= trace.rho[:-1]] & np.r_[trace.rho[:-1] > trace.rho[1:], True] mins[0] = mins[-1] = False self.apogees = np.where(mins)[0]
#!/usr/bin/env python import tsyganenko Tsyg = tsyganenko.tsygTrace(65.,-148.,6371.) # earth surface near Fairbanks, AK
#!/usr/bin/env python # coding=utf-8 # region Description import numpy as np import tsyganenko lats = range(10, 90, 10) lons = np.zeros(len(lats)) rhos = 6372. * np.ones(len(lats)) trace = tsyganenko.tsygTrace(lats, lons, rhos) print trace ax = trace.plot() # endregion # region Description # Inputs # Date and time year = 2000 doy = 1 hr = 12 mn = 0 sc = 0 # Solar wind speed vxgse = -400. vygse = 0. vzgse = 0. # Execution parameters lmax = 5000 rlim = 60. r0 = 1.
def trace(date=None, fig=True): """ Trace RBSP footprints for a given date (python datetime object) of for all the available dates """ datapath = '/home/sebastien/Documents/code/rbsp/data/' # Read the data year, month, day, hour, minute, second, altA, latA, lonA = np.genfromtxt( 'data/orbitposA.dat', unpack=True, skiprows=1) dates = [] for y, m, d, h, mn, s in zip(year, month, day, hour, minute, second): dates.append(datetime(int(y), int(m), int(d), int(h), int(mn), int(s))) datesA = np.array(dates) year, month, day, hour, minute, second, altB, latB, lonB = np.genfromtxt( 'data/orbitposB.dat', unpack=True, skiprows=1) dates = [] for y, m, d, h, mn, s in zip(year, month, day, hour, minute, second): dates.append(datetime(int(y), int(m), int(d), int(h), int(mn), int(s))) datesB = np.array(dates) # Ganerate day-by-day array if not date: datesAll = np.concatenate((datesA, datesB)) un, inds = np.unique([d.strftime('%Y%m%d') for d in datesAll], return_index=True) dateIn = datesAll[inds] else: dateIn = [date] # Generate traces day-by-day for day in dateIn: print 'Tracing {}'.format(day.strftime('%Y-%b-%d')) # First A inds = [d.date() == day.date() for d in datesA] sdates = datesA[np.array(inds)] if len(sdates) >= 1: # trace points lats = latA[np.array(inds)] lons = lonA[np.array(inds)] rhos = altA[np.array(inds)] traceA = ts.tsygTrace(lats, lons, rhos, datetime=sdates, rmin=1.047) # Save traces traceA.save(datapath + 'trace.{}.A.dat'.format(day.strftime('%Y%m%d'))) # Then B inds = [d.date() == day.date() for d in datesB] sdates = datesB[np.array(inds)] if len(sdates) >= 1: # trace points lats = latB[np.array(inds)] lons = lonB[np.array(inds)] rhos = altB[np.array(inds)] traceB = ts.tsygTrace(lats, lons, rhos, datetime=sdates, rmin=1.047) # Save traces traceB.save(datapath + 'trace.{}.B.dat'.format(day.strftime('%Y%m%d'))) if fig: plot(traceA=traceA, traceB=traceB)
def plot(date=None, traceA=None, traceB=None, saveDb=True, noPlot=False): """ Plot RBSP footprints """ assert not date == None or not ( traceA == None and traceB == None), 'Either give a date, or a trace for A and B' datapath = '/home/sebastien/Documents/code/rbsp/data/' imgpath = '/home/sebastien/Documents/code/rbsp/img/' # Read trace if not traceA: traceA = ts.tsygTrace(filename=datapath + 'trace.{}.A.dat'.format(date.strftime('%Y%m%d'))) if not traceB: traceB = ts.tsygTrace(filename=datapath + 'trace.{}.B.dat'.format(date.strftime('%Y%m%d'))) if not date: date = traceA.datetime[0] if not noPlot: # Init figure fig = pylab.figure(figsize=(11, 6.5)) pylab.rcParams.update({'font.size': 14}) fovCol = (.5, .6, .6) fovAlpha = .2 # NH ax1 = fig.add_subplot(121) m1 = Basemap(projection='npstere', boundinglat=35, lon_0=270, resolution='l') m1.drawcoastlines(color='.5') m1.fillcontinents(color=(.8, .8, .8)) # draw parallels and meridians. m1.drawparallels(np.arange(-80., 81., 20.), color='.6') m1.drawmeridians(np.arange(-180., 181., 20.), color='.6') m1.drawmapboundary() # Draw FP x, y = m1(traceA.lonNH, traceA.latNH) m1.scatter(x, y, color='r', zorder=3, s=5) x, y = m1(traceB.lonNH, traceB.latNH) m1.scatter(x, y, color='b', zorder=3, s=5) overlayFov(m1, all=True, hemi='north', maxGate=75, dateTime=traceA.datetime[0], fovColor=fovCol, lineColor=fovCol, lineWidth=0, fovAlpha=fovAlpha) # SH ax2 = fig.add_subplot(122) m2 = Basemap(projection='spstere', boundinglat=-35, lon_0=270, resolution='l') m2.drawcoastlines(color='.5') m2.fillcontinents(color=(.8, .8, .8)) # draw parallels and meridians. m2.drawparallels(np.arange(-80., 81., 20.), color='.6') m2.drawmeridians(np.arange(-180., 181., 20.), color='.6') m2.drawmapboundary() # Draw FP x, y = m2(traceA.lonSH, traceA.latSH) m2.scatter(x, y, color='r', zorder=3, s=5) x, y = m2(traceB.lonSH, traceB.latSH) m2.scatter(x, y, color='b', zorder=3, s=5) overlayFov(m2, all=True, hemi='south', maxGate=75, dateTime=traceA.datetime[0], fovColor=fovCol, lineColor=fovCol, lineWidth=0, fovAlpha=fovAlpha) fig.tight_layout() Title = '{}'.format(date.strftime('%Y - %b - %d')) fig.text(.02, .92, Title) fig.text(.02, .09, 'VAP-A', color='r', va='top') fig.text(.1, .09, 'VAP-B', color='b', va='top') Title = '{}'.format(date.strftime('%Y - %b - %d')) fig.text(.51, .92, Title) fig.text(.51, .09, 'VAP-A', color='r', va='top') fig.text(.59, .09, 'VAP-B', color='b', va='top') # List apogees minsA = np.r_[True, traceA.rho[1:] >= traceA.rho[:-1]] & np.r_[ traceA.rho[:-1] > traceA.rho[1:], True] minsA[0] = minsA[-1] = False lonANH = traceA.lonNH[minsA] latANH = traceA.latNH[minsA] lonASH = traceA.lonSH[minsA] latASH = traceA.latSH[minsA] timeA = traceA.datetime[minsA] minsB = np.r_[True, traceB.rho[1:] >= traceB.rho[:-1]] & np.r_[ traceB.rho[:-1] > traceB.rho[1:], True] minsB[0] = minsB[-1] = False lonBNH = traceB.lonNH[minsB] latBNH = traceB.latNH[minsB] lonBSH = traceB.lonSH[minsB] latBSH = traceB.latSH[minsB] timeB = traceB.datetime[minsB] rads = network() apoA_NH = '' apoA_SH = '' radsANH = [] radsASH = [] for i in xrange(len(lonANH)): apoA_NH += '({}UT, {:4.2f}E, {:4.2f}N) | '.format( timeA[i].strftime('%H:%M'), lonANH[i], latANH[i]) tradANH = rads.getRadarsByPosition(latANH[i], lonANH[i], 300., datetime=timeA[i]) if not noPlot: x, y = m1(lonANH[i], latANH[i]) # ax1.text(x, y, timeA[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(.3,0,0), fontsize=10, ha='center') textHighlighted((x, y), timeA[i].strftime('%H:%M'), ax=ax1, zorder=6, color=(.3, 0, 0), fontsize=10) if tradANH: radsANH.append(tradANH) if saveDb: writeToDb(timeA[i], latANH[i], lonANH[i], 'A', tradANH) apoA_SH += '({}UT, {:4.2f}E, {:4.2f}N) | '.format( timeA[i].strftime('%H:%M'), lonASH[i], latASH[i]) tradASH = rads.getRadarsByPosition(latASH[i], lonASH[i], 300., datetime=timeA[i]) if not noPlot: x, y = m2(lonASH[i], latASH[i]) # ax2.text(x, y, timeA[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(.3,0,0), fontsize=10, ha='center') textHighlighted((x, y), timeA[i].strftime('%H:%M'), ax=ax2, zorder=6, color=(.3, 0, 0), fontsize=10) if tradASH: radsASH.append(tradASH) if saveDb: writeToDb(timeA[i], latASH[i], lonASH[i], 'A', tradASH) apoB_NH = '' apoB_SH = '' radsBNH = [] radsBSH = [] for i in xrange(len(lonBNH)): apoB_NH += '({}UT, {:4.2f}E, {:4.2f}N) '.format( timeB[i].strftime('%H:%M'), lonBNH[i], latBNH[i]) tradBNH = rads.getRadarsByPosition(latBNH[i], lonBNH[i], 300., datetime=timeB[i]) if not noPlot: x, y = m1(lonBNH[i], latBNH[i]) # ax1.text(x, y, timeB[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(0,0,.3), fontsize=10, ha='center') textHighlighted((x, y), timeB[i].strftime('%H:%M'), ax=ax1, zorder=6, color=(0, 0, .3), fontsize=10) if tradBNH: radsBNH.append(tradBNH) if saveDb: writeToDb(timeB[i], latBNH[i], lonBNH[i], 'B', tradBNH) apoB_SH += '({}UT, {:4.2f}E, {:4.2f}N) '.format( timeB[i].strftime('%H:%M'), lonBSH[i], latBSH[i]) tradBSH = rads.getRadarsByPosition(latBSH[i], lonBSH[i], 300., datetime=timeB[i]) if not noPlot: x, y = m2(lonBSH[i], latBSH[i]) # ax2.text(x, y, timeB[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(0,0,.3), fontsize=10, ha='center') textHighlighted((x, y), timeB[i].strftime('%H:%M'), ax=ax2, zorder=6, color=(0, 0, .3), fontsize=10) if tradBSH: radsBSH.append(tradBSH) if saveDb: writeToDb(timeB[i], latBSH[i], lonBSH[i], 'B', tradBSH) if not noPlot: fig.savefig(imgpath + 'rbsp.map.{}.pdf'.format(date.strftime('%Y%m%d'))) fig.savefig(imgpath + 'rbsp.map.{}.svg'.format(date.strftime('%Y%m%d'))) if __name__ == '__main__': fig.clf() pylab.close(fig)
def plot(date=None, traceA=None, traceB=None, saveDb=True, noPlot=False): """ Plot RBSP footprints """ assert not date==None or not (traceA==None and traceB==None), 'Either give a date, or a trace for A and B' datapath = '/home/sebastien/Documents/code/rbsp/data/' imgpath = '/home/sebastien/Documents/code/rbsp/img/' # Read trace if not traceA: traceA = ts.tsygTrace(filename=datapath+'trace.{}.A.dat'.format(date.strftime('%Y%m%d'))) if not traceB: traceB = ts.tsygTrace(filename=datapath+'trace.{}.B.dat'.format(date.strftime('%Y%m%d'))) if not date: date = traceA.datetime[0] if not noPlot: # Init figure fig = pylab.figure(figsize=(11,6.5)) pylab.rcParams.update({'font.size': 14}) fovCol = (.5,.6,.6) fovAlpha = .2 # NH ax1 = fig.add_subplot(121) m1 = Basemap(projection='npstere',boundinglat=35,lon_0=270,resolution='l') m1.drawcoastlines(color='.5') m1.fillcontinents(color=(.8,.8,.8)) # draw parallels and meridians. m1.drawparallels(np.arange(-80.,81.,20.), color='.6') m1.drawmeridians(np.arange(-180.,181.,20.), color='.6') m1.drawmapboundary() # Draw FP x, y = m1(traceA.lonNH, traceA.latNH) m1.scatter(x, y, color='r', zorder=3, s=5) x, y = m1(traceB.lonNH, traceB.latNH) m1.scatter(x, y, color='b', zorder=3, s=5) overlayFov(m1, all=True, hemi='north', maxGate=75, dateTime=traceA.datetime[0], fovColor=fovCol, lineColor=fovCol, lineWidth=0, fovAlpha=fovAlpha) # SH ax2 = fig.add_subplot(122) m2 = Basemap(projection='spstere',boundinglat=-35,lon_0=270,resolution='l') m2.drawcoastlines(color='.5') m2.fillcontinents(color=(.8,.8,.8)) # draw parallels and meridians. m2.drawparallels(np.arange(-80.,81.,20.), color='.6') m2.drawmeridians(np.arange(-180.,181.,20.), color='.6') m2.drawmapboundary() # Draw FP x, y = m2(traceA.lonSH, traceA.latSH) m2.scatter(x, y, color='r', zorder=3, s=5) x, y = m2(traceB.lonSH, traceB.latSH) m2.scatter(x, y, color='b', zorder=3, s=5) overlayFov(m2, all=True, hemi='south', maxGate=75, dateTime=traceA.datetime[0], fovColor=fovCol, lineColor=fovCol, lineWidth=0, fovAlpha=fovAlpha) fig.tight_layout() Title = '{}'.format(date.strftime('%Y - %b - %d')) fig.text(.02, .92, Title) fig.text(.02, .09, 'VAP-A', color='r', va='top') fig.text(.1, .09, 'VAP-B', color='b', va='top') Title = '{}'.format(date.strftime('%Y - %b - %d')) fig.text(.51, .92, Title) fig.text(.51, .09, 'VAP-A', color='r', va='top') fig.text(.59, .09, 'VAP-B', color='b', va='top') # List apogees minsA = np.r_[True, traceA.rho[1:] >= traceA.rho[:-1]] & np.r_[traceA.rho[:-1] > traceA.rho[1:], True] minsA[0] = minsA[-1] = False lonANH = traceA.lonNH[minsA] latANH = traceA.latNH[minsA] lonASH = traceA.lonSH[minsA] latASH = traceA.latSH[minsA] timeA = traceA.datetime[minsA] minsB = np.r_[True, traceB.rho[1:] >= traceB.rho[:-1]] & np.r_[traceB.rho[:-1] > traceB.rho[1:], True] minsB[0] = minsB[-1] = False lonBNH = traceB.lonNH[minsB] latBNH = traceB.latNH[minsB] lonBSH = traceB.lonSH[minsB] latBSH = traceB.latSH[minsB] timeB = traceB.datetime[minsB] rads = network() apoA_NH = '' apoA_SH = '' radsANH = [] radsASH = [] for i in xrange(len(lonANH)): apoA_NH += '({}UT, {:4.2f}E, {:4.2f}N) | '.format(timeA[i].strftime('%H:%M'), lonANH[i], latANH[i]) tradANH = rads.getRadarsByPosition(latANH[i], lonANH[i], 300., datetime=timeA[i]) if not noPlot: x, y = m1(lonANH[i], latANH[i]) # ax1.text(x, y, timeA[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(.3,0,0), fontsize=10, ha='center') textHighlighted((x,y), timeA[i].strftime('%H:%M'), ax=ax1, zorder=6, color=(.3,0,0), fontsize=10) if tradANH: radsANH.append( tradANH ) if saveDb: writeToDb(timeA[i], latANH[i], lonANH[i], 'A', tradANH) apoA_SH += '({}UT, {:4.2f}E, {:4.2f}N) | '.format(timeA[i].strftime('%H:%M'), lonASH[i], latASH[i]) tradASH = rads.getRadarsByPosition(latASH[i], lonASH[i], 300., datetime=timeA[i]) if not noPlot: x, y = m2(lonASH[i], latASH[i]) # ax2.text(x, y, timeA[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(.3,0,0), fontsize=10, ha='center') textHighlighted((x,y), timeA[i].strftime('%H:%M'), ax=ax2, zorder=6, color=(.3,0,0), fontsize=10) if tradASH: radsASH.append( tradASH ) if saveDb: writeToDb(timeA[i], latASH[i], lonASH[i], 'A', tradASH) apoB_NH = '' apoB_SH = '' radsBNH = [] radsBSH = [] for i in xrange(len(lonBNH)): apoB_NH += '({}UT, {:4.2f}E, {:4.2f}N) '.format(timeB[i].strftime('%H:%M'), lonBNH[i], latBNH[i]) tradBNH = rads.getRadarsByPosition(latBNH[i], lonBNH[i], 300., datetime=timeB[i]) if not noPlot: x, y = m1(lonBNH[i], latBNH[i]) # ax1.text(x, y, timeB[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(0,0,.3), fontsize=10, ha='center') textHighlighted((x,y), timeB[i].strftime('%H:%M'), ax=ax1, zorder=6, color=(0,0,.3), fontsize=10) if tradBNH: radsBNH.append( tradBNH ) if saveDb: writeToDb(timeB[i], latBNH[i], lonBNH[i], 'B', tradBNH) apoB_SH += '({}UT, {:4.2f}E, {:4.2f}N) '.format(timeB[i].strftime('%H:%M'), lonBSH[i], latBSH[i]) tradBSH = rads.getRadarsByPosition(latBSH[i], lonBSH[i], 300., datetime=timeB[i]) if not noPlot: x, y = m2(lonBSH[i], latBSH[i]) # ax2.text(x, y, timeB[i].strftime('%H:%M'), zorder=5, clip_on=True, color=(0,0,.3), fontsize=10, ha='center') textHighlighted((x,y), timeB[i].strftime('%H:%M'), ax=ax2, zorder=6, color=(0,0,.3), fontsize=10) if tradBSH: radsBSH.append( tradBSH ) if saveDb: writeToDb(timeB[i], latBSH[i], lonBSH[i], 'B', tradBSH) if not noPlot: fig.savefig( imgpath+'rbsp.map.{}.pdf'.format(date.strftime('%Y%m%d')) ) fig.savefig( imgpath+'rbsp.map.{}.svg'.format(date.strftime('%Y%m%d')) ) if __name__ == '__main__': fig.clf() pylab.close(fig)
-d<date>, --date=<date> date in YYYYMMDD format ''' print helpstr sys.exit() elif opt in ("-d", "--date"): dateIn = arg print 'Date is %s' % dateIn try: date = dtmod(dateIn[0:4], dateIn[4:6], dateIn[6:]) except: date = dtmod.utcnow() rbspdata = '/home/sebastien/Documents/code/rbsp/' traceA = ts.tsygTrace(filename=rbspdata + 'trace.{}.A.dat'.format(date.strftime('%Y%m%d'))) traceB = ts.tsygTrace(filename=rbspdata + 'trace.{}.B.dat'.format(date.strftime('%Y%m%d'))) strdate = date.strftime('%Y%m%d') print date.strftime('%Y-%b-%d') path = '/home/sebastien/Desktop/rbsp.orbit' fig = figure(figsize=(15, 15)) start = 0 ip = start while ip < len(traceA.lat): plotPanels(ind=ip, start=start) if ip == start: fig.tight_layout()
-d<date>, --date=<date> date in YYYYMMDD format ''' print helpstr sys.exit() elif opt in ("-d", "--date"): dateIn = arg print 'Date is %s' % dateIn try: date = dtmod(dateIn[0:4], dateIn[4:6], dateIn[6:]) except: date = dtmod.utcnow() rbspdata = '/home/sebastien/Documents/code/rbsp/' traceA = ts.tsygTrace(filename=rbspdata+'trace.{}.A.dat'.format(date.strftime('%Y%m%d'))) traceB = ts.tsygTrace(filename=rbspdata+'trace.{}.B.dat'.format(date.strftime('%Y%m%d'))) strdate = date.strftime('%Y%m%d') print date.strftime('%Y-%b-%d') path = '/home/sebastien/Desktop/rbsp.orbit' fig = figure(figsize=(15,15)) start = 0 ip = start while ip < len(traceA.lat): plotPanels(ind=ip, start=start) if ip == start: fig.tight_layout() fig.savefig('{}/rbsp.orbit.{}.{:06d}.png'.format(path, strdate, ip))