1. 31 May, 2018 4 commits
    • Jason Milhone's avatar
    • Jason Milhone's avatar
      Add empty_lru_cache function · 3cbb6dec
      Jason Milhone authored
      Added a function called empty_lru_cache function to empty the cache for
      the decorated _retrieve_signal function.  I want the user to be able to
      regrab data for the same shot if a modification has been changed on the
      tree side.
      Because data.Data is now truthy, I changed the check_data_dictionary to
      leverage that functionality instead of checking against None.
      Also, removed some old print statements.
    • Jason Milhone's avatar
      Add static method iterable_validator to Data class · ad9f8500
      Jason Milhone authored
      I wanted to check the __init__ arguments to see if they are iterable. I
      decorated iterable_validator with @staticmethod because it does not need
      to know anything about the class name or instance.
      iterable_validator will raise a ValueError if the data is not iterable.
    • Jason Milhone's avatar
      Add dunder methods to Data class · 41d9e634
      Jason Milhone authored
      Data class now can be 'truthy', has a defined length, and supports ==
      ToDo: Redo the __repr__ function and __str__ functions.
  2. 29 May, 2018 1 commit
  3. 28 May, 2018 2 commits
    • Jason Milhone's avatar
      Moved to using gridspec over subplot2grid · a296b8e7
      Jason Milhone authored
      I was encountering an error (see Issue #12 messages) where matplotlib
      doesn't calculate the new subplot coordinates correctly.  There ends up
      being a negative width or height followed by crashing the program.  I
      don't seem to have this issue anymore by using gridspec.  However, I
      needed to add some functionality to app.py to use
      GridSpec.tight_layout() because Figure.tight_layout() wasn't working
      like I thought would.
    • Jason Milhone's avatar
      Add lru_cache functionality to grabbing data · 520b608b
      Jason Milhone authored
      Created a helper function called _retrieve_signal where all inputs are
      hashable so that @functools.lru_cache could be utilized.
      retrieve_signal now unpacks some of the inputs and calls
      Some of the logging messages were modified as well.
  4. 22 May, 2018 6 commits
    • Jason Milhone's avatar
      Remove print statements · c6ffef51
      Jason Milhone authored
    • Jason Milhone's avatar
    • Jason Milhone's avatar
      Merge branch 'master' into milhone_dev · 4c1f7036
      Jason Milhone authored
    • Jason Milhone's avatar
      Add @log decorator in more places · c7a99ca4
      Jason Milhone authored
      Continuing to add the @log decorator in places.  Made some modifcations
      to some of the pyqt slot functions that needed an extra paramter that
      isn't used.  I really don't understand why they didn't throw errors
      before.  Probably something to do with how PyQt handles them.
      Added some more logging statements to exception handling in
    • Jason Milhone's avatar
      Add hotfix for double clicking update button crash · c159bcff
      Jason Milhone authored
      Double clicking update button would lead to a crash.  Button is now
      disabled while grabbing data.  It is unclear if I just added a bug to
      master.  Sorry!
    • Jason Milhone's avatar
      Create a logging package · 6b655d94
      Jason Milhone authored
      A logging packaged was created with single module called
      piscope_logging has three functions:
      	create_logger: creates a logging.Logger instance
      	log: decorator that logs calls and exceptions
      	time_log: decorator that logs calls, exceptions, and time of
      The decorators have been added in mdsplus_helpers.py, app.py.  The
      logger creation has been modified in main.py
      Notes: I've noticed that on some of my pyqt slots, I haven't included enough
      arguments for the incoming pyqt signals.  This makes things crash if you
      decorate the slot function.  I'm working on fixing this as we speak.
  5. 21 May, 2018 2 commits
  6. 19 May, 2018 1 commit
  7. 18 May, 2018 1 commit
  8. 16 May, 2018 8 commits
  9. 15 May, 2018 5 commits
  10. 11 May, 2018 1 commit
    • Jason Milhone's avatar
      Fixing new config bugs · 54cec989
      Jason Milhone authored
      Tried to fix a bunch of bugs associated with creating a new
      configuration file.
      Also fixed the sliders when opening the new config dialog.
      New Feature: Handles shot number equal to 0.
      I probably introducted new bugs.  I spent a lot of time fixing little
      issues with self.acquiring_data race conditions.  It's time I write out
      a proper state machine and make sure I map it correctly when grabbing
  11. 10 May, 2018 2 commits
  12. 07 May, 2018 1 commit
  13. 03 May, 2018 3 commits
    • Jason Milhone's avatar
      Added logging to try to track down errors · 911e9ae1
      Jason Milhone authored
    • Jason Milhone's avatar
      Forgot a small edit I meant to make · 8f28934d
      Jason Milhone authored
    • Jason Milhone's avatar
      Tracking down a locking bug · 3d5e5431
      Jason Milhone authored
      Ethan and I have witnessed a bug in the control room where the gui locks
      up while in share-x and auto update mode.  I assume the culprit is auto
      update and not share-x.
      I have added a QTimer to query the mdsplus event watching thread to ask
      if it is still alive when auto update is active.  I have yet to
      replicate the bug at home and the thread has always been active.
      In response to that knowledge, I added some extra logic inside in
      app.py.  When it is time to spawn all of the mdsplus calls, it will call
      a brand new function in mdsplus_helpers.py called check_open_tree.
      Before any data calls go out, it must get a True back saying the tree is
      able to be opened.  If it doesn't, then it will gracefully move on and
      say there was an error opening the shot and setting self.data to None.
      I'm hoping this fixes some of the issues we have been having.
      Unfortunately, all of these fixes are inside this branch that might have
      bugs of its own.  Good Luck!
  14. 01 May, 2018 1 commit
    • Jason Milhone's avatar
      Added non shareable axes · 962c00b5
      Jason Milhone authored
      You can now specify if an axes is not shareable in a configuration.
      You can also specify if an axes is not to be resampled.  I might make
      this on the signal level, but I'm not sure.
      This is probably buggy, but I haven't found any glaring issues yet.
  15. 30 Apr, 2018 2 commits
    • Jason Milhone's avatar
      Bug Fixes with Grid Spec Upgrade · a1c0bb45
      Jason Milhone authored
      Fixed a bunch of minor bugs with the grid spec upgrade.  Please let me
      know if you find any more.
      I believe I modified all of the old config files to work with the new
      grid spec upgrade.
    • Jason Milhone's avatar
      Added grid spec with uneven rows · fa810963
      Jason Milhone authored
      This is still a work in progress.  I probably have added a bunch of bugs
      that I have not found yet.
      The config file now has a col key which is a list of 6 numbers
      corresponding to the number of rows in that column.  The first column
      must be 1 or higher. The rest could be zero.
      I also made the edit configuration window a little easier to read.  It
      now specifically says Col: # Row: # to make it obvious which subplot is
      being configured.
      Added a helpers.py file to do a least common multiple calculation for a
      list of numbers.