def __init__(self, config, **kwargs): """ Construct the main picker widget: a means for interactively selecting which sounding profile(s) to view. """ super(Picker, self).__init__(**kwargs) self.data_sources = data_source.loadDataSources() self.config = config self.skew = None ## default the sounding location to OUN because obviously I'm biased self.loc = None ## the index of the item in the list that corresponds ## to the profile selected from the list self.prof_idx = [] ## set the default profile type to Observed self.model = "Observed" ## this is the default model initialization time self.run = [ t for t in self.data_sources[self.model].getAvailableTimes() if t.hour in [0, 12] ][-1] urls = data_source.pingURLs(self.data_sources) self.has_connection = any( urls.values() ) ## initialize the UI self.__initUI()
def __init__(self, **kwargs): """ Construct the main window and handle all of the necessary events. This window serves as the SHARPpy sounding picker - a means for interactively selecting which sounding profile(s) to view. """ super(MainWindow, self).__init__(**kwargs) self.data_sources = data_source.loadDataSources() ## All of these variables get set/reset by the various menus in the GUI ## default the sounding location to OUN because obviously I'm biased self.loc = None ## the index of the item in the list that corresponds ## to the profile selected from the list self.prof_idx = [] ## set the default profile type to Observed self.model = "Observed" ## this is the default model initialization time. self.run = [ t for t in self.data_sources[self.model].getAvailableTimes() if t.hour in [0, 12] ][-1] ## initialize the UI self.__initUI()
def update_datasource_dropdown(self, selected="Observed"): """ Updates the dropdown menu that contains the available data sources :return: """ logging.debug("Calling full_gui.update_datasource_dropdown") for i in range(self.model_dropdown.count()): self.model_dropdown.removeItem(0) self.data_sources = data_source.loadDataSources() models = sorted(self.data_sources.keys()) for model in models: self.model_dropdown.addItem(model) self.model_dropdown.setCurrentIndex(models.index(selected)) self.get_model(models.index(selected))
def parseArgs(): desc = """This binary launches the SHARPpy Picker and GUI from the command line. When run from the command line without arguments, this binary simply launches the Picker and loads in the various datasets within the user's ~/.sharppy directory. When the --debug flag is set, the GUI is run in debug mode. When a set of files are passed as a command line argument, the program will generate images of the SHARPpy GUI for each sounding. Soundings can be overlaid on top of one another if the collect flag is set. In addition, data from the datasources can be plotted using the datasource, station, and datetime arguments.""" data_sources = [key for key in data_source.loadDataSources().keys()] ep = "Available Datasources: " + ', '.join(data_sources) ap = argparse.ArgumentParser(description=desc, epilog=ep) ap.add_argument('file_names', nargs='*', help='a list of files to read and plot') ap.add_argument('--debug', dest='debug', action='store_true', help='turns on debug mode for the GUI') ap.add_argument('--version', dest='version', action='store_true', help="print out versioning information") ap.add_argument( '--collect', dest='collect', action='store_true', help="overlay profiles from filename on top of one another in GUI image" ) #ap.add_argument('--noclose', dest='close', action='store_false', # help="do not close the GUI after viewing the image") group = ap.add_argument_group("datasource access arguments") group.add_argument('--datasource', dest='ds', type=str, help="the name of the datasource to search") group.add_argument('--station', dest='stn', type=str, help="the name of the station to plot (ICAO, IATA)") group.add_argument('--datetime', dest='dt', type=str, help="the date/time of the data to plot (YYYYMMDD/HH)") ap.add_argument('--output', dest='output', type=str, help="the output directory to store the images", default='./') args = ap.parse_args() # Print out versioning information and quit if args.version is True: ap.exit(0, versioning_info(True) + '\n') # Catch invalid data source if args.ds is not None and args.ds not in data_sources: txt = FAIL + "Invalid data source passed to the program. Exiting." + ENDC ap.error(txt) # Catch invalid datetime format if args.dt is not None: try: date.datetime.strptime(args.dt, '%Y%m%d/%H') except: txt = FAIL + "Invalid datetime passed to the program. Exiting." + ENDC ap.error(txt) return args