Source code for pydivide.fullplot

import pydivide

[docs]def fullplot(instruments=None, level='l2', type=None, start_date='2014-01-01', end_date='2014-01-02', tplot_names='', filenames=None, insitu=None, parameter='', auto_yes=True): ''' Plot any insitu Level 2 or KP data from MAVEN. Downloads files found into PySPEDAS and loads them into memory via PyTplot. Then creates an interactive plot window including spectrogram slicer, MAVEN's location and orbit in MSO coordinates, and MAVEN's location in GEO coordinates, especially relative to the crustal magnetic fields. Parameters: instruments: str/list of str Instruments from which you want to download data. Accepted values are any combination of: sta, swi, swe, lpw, euv, ngi, iuv, mag, sep, rse type: str/list of str The observation/file type of the instruments to load. If None, all file types are loaded. Otherwise, a file will only be loaded into tplot if its descriptor matches one of the strings in this field. See the instrument SIS for more detail on types. tplot_names : list of str The tplot names to plot. Also not needed, use only if the variables are already loaded into memory. For example, if you want to load in data with this fullplot procedure but modify the variables with pytplot.options or the pytplot.tplot_math routines, you can re-plot the data by specifying the specific pytplot variables. filenames: str/list of str ['yyyy-mm-dd'] List of files to load start_date: str String that is the start date for downloading data (YYYY-MM-DD), or the orbit number end_date: str String that is the end date for downloading data (YYYY-MM-DD), or the orbit number kp : dict insitu kp data structure/dictionary read from file(s). This is not required, only needed if you want to plot variables from this data structure. parameter : list of str/int If the above kp data structure is given, this variable will be the parameters to plot (see the pydivide.plot function) Types: =================== ==================================== Instrument Level 2 Observation Type/File Type =================== ==================================== EUV bands LPW lpiv, lpnt, mrgscpot, we12, we12burstlf, we12bursthf, we12burstmf, wn, wspecact, wspecpas STATIC 2a, c0, c2, c4, c6, c8, ca, cc, cd, ce, cf, d0, d1, d4, d6, d7, d8, d9, da, db SEP s1-raw-svy-full, s1-cal-svy-full, s2-raw-svy-full, s2-cal-svy-full SWEA coarsearc3d, coarsesvy3d, finearc3d, finesvy3d, onboardsvymom, onboardsvyspec SWIA arc3d, arcpad, svy3d, svypad, svyspec MAG ss, pc, pl, ss1s, pc1s, pl1s =================== ===================================== Returns : None Examples: >>> # Plots EUV Bands, LPW LP-IV, and MAG SS data on Jan 01 2015 >>> pydivide.fullplot(instruments=['euv', 'lpw', 'mag'], type=['bands', 'lpnt', 'ss1s'], start_date='2015-01-01', end_date='2015-01-02') ''' import os import pyspedas import pytplot from pyqtgraph.Qt import QtCore, QtGui if insitu != None: pydivide.plot(insitu, parameter=parameter, exec_qt=False) pytplot.options('mvn_kp::spacecraft::altitude', 'map', 1) map_file = os.path.join(os.path.dirname(__file__), 'basemaps', 'MAG_Connerny_2005.jpg') pytplot.options('mvn_kp::spacecraft::altitude', 'basemap', map_file) pytplot.tplot('mvn_kp::spacecraft::altitude', exec_qt=False, window_name='PYDIVIDE_MAP2D', pos_2d=True, pos_3d=True) elif tplot_names == '': tplot_names = pyspedas.maven_load(filenames=filenames, instruments=instruments, level=level, type=type, start_date=start_date, end_date=end_date, auto_yes=auto_yes) pytplot.options('mvn_kp::spacecraft::altitude', 'map', 1) map_file = os.path.join(os.path.dirname(__file__), 'basemaps', 'MAG_Connerny_2005.jpg') pytplot.options('mvn_kp::spacecraft::altitude', 'basemap', map_file) pytplot.tplot(tplot_names, pos_2d=True, pos_3d=True, interactive=True, exec_qt=False, window_name='PYDIVIDE_PLOT') pytplot.tplot('mvn_kp::spacecraft::altitude', exec_qt=False, window_name='PYDIVIDE_MAP2D', extra_functions=[], extra_function_args=[]) else: pytplot.options('mvn_kp::spacecraft::altitude', 'map', 1) map_file = os.path.join(os.path.dirname(__file__), 'basemaps', 'MAG_Connerny_2005.jpg') pytplot.options('mvn_kp::spacecraft::altitude', 'basemap', map_file) pytplot.tplot(tplot_names, pos_2d=True, pos_3d=True, interactive=True, exec_qt=False, window_name='PYDIVIDE_PLOT') pytplot.tplot('mvn_kp::spacecraft::altitude', exec_qt=False, window_name='PYDIVIDE_MAP2D', extra_functions=[], extra_function_args=[]) app = QtGui.QApplication([]) win = QtGui.QMainWindow() app.setStyle("Fusion") plot_splitter = QtGui.QSplitter(QtCore.Qt.Vertical, frameShape=QtGui.QFrame.StyledPanel, frameShadow=QtGui.QFrame.Plain) ancillary_splitter = QtGui.QSplitter(QtCore.Qt.Vertical, frameShape=QtGui.QFrame.StyledPanel, frameShadow=QtGui.QFrame.Plain) main_splitter = QtGui.QSplitter(QtCore.Qt.Horizontal, frameShape=QtGui.QFrame.StyledPanel, frameShadow=QtGui.QFrame.Plain) main_splitter.addWidget(plot_splitter) main_splitter.addWidget(ancillary_splitter) for i, plot_name in enumerate(pytplot.pytplotWindow_names): if plot_name == 'PYDIVIDE_PLOT': plot_splitter.addWidget(pytplot.pytplotWindows[i]) for i, plot_name in enumerate(pytplot.pytplotWindow_names): if plot_name == 'PYDIVIDE_MAP2D': plot_splitter.addWidget(pytplot.pytplotWindows[i]) for i, plot_name in enumerate(pytplot.pytplotWindow_names): if plot_name == 'Spec_Slice': ancillary_splitter.addWidget(pytplot.pytplotWindows[i]) for i, plot_name in enumerate(pytplot.pytplotWindow_names): if plot_name == '2D_MARS': ancillary_splitter.addWidget(pytplot.pytplotWindows[i]) for i, plot_name in enumerate(pytplot.pytplotWindow_names): if plot_name == '3D_MARS': ancillary_splitter.addWidget(pytplot.pytplotWindows[i]) main_splitter.show() #This section will be for implementing IUVS KP data ''' import pyqtgraph.opengl as gl iuvs_data = gl.GLLinePlotItem() for i, plot_name in enumerate(pytplot.pytplotWindow_names): if plot_name == '3D_MARS': pytplot.pytplotWindows[i].centralWidget().addItem(iuvs_data) import math insitu, iuvs = pydivide.read(input_time='2016-02-18') time = iuvs[0]['periapse1']['time_start'] lat = np.radians(90 - iuvs[0]['periapse1']['lat']) lon = np.radians(iuvs[0]['periapse1']['lon']) alt = np.array(iuvs[0]['periapse1']['density']['ALTITUDE']) + 3389.5 # determine transformation matrix time = pytplot.tplot_utilities.str_to_int(time) iuvs_time = np.abs(insitu['Time'].values - time).argmin() print(iuvs_time) rotmat = np.array([[insitu['SPACECRAFT']['T11'][iuvs_time], insitu['SPACECRAFT']['T12'][iuvs_time], insitu['SPACECRAFT']['T13'][iuvs_time]], [insitu['SPACECRAFT']['T21'][iuvs_time], insitu['SPACECRAFT']['T22'][iuvs_time], insitu['SPACECRAFT']['T23'][iuvs_time]], [insitu['SPACECRAFT']['T31'][iuvs_time], insitu['SPACECRAFT']['T32'][iuvs_time], insitu['SPACECRAFT']['T33'][iuvs_time]]]) mso_coords = [] for a in alt: x = math.cos(lat) * math.cos(lon) * a y = math.cos(lat) * math.sin(lon) * a z = math.sin(lat) * a mso_coords.append(np.matmul(rotmat, np.array([x,y,z]))) mso_coords = np.array(mso_coords) print(mso_coords) iuvs_data.setData(pos=mso_coords, width=10) ''' import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): app.exec_()