Skip to content

Commit

Permalink
Merge pull request #300 from ODM2/Beta_1.2.8
Browse files Browse the repository at this point in the history
Beta 1.2.8
  • Loading branch information
Stephanie Reeder authored Oct 18, 2016
2 parents d18d441 + ce2851f commit 91ead6b
Show file tree
Hide file tree
Showing 26 changed files with 1,352 additions and 173 deletions.
3 changes: 2 additions & 1 deletion ODMTools.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@

import pyodbc
import pymysql
import psycopg2
#import psycopg2


tool = LoggerTool()
logger = tool.setupLogger('main', 'odmtools.log', 'a', logging.INFO)
Expand Down
22 changes: 12 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,44 @@ If you want to try ODM Tools, we have created a couple of [testing databases](ht

##ODM Compatibility

ODM Tools Python is currenlty fully compatible with ODM Version 1.1.1. We are working on ODM2 compatibility, and should have it worked out this summer.
ODM Tools Python is currenlty fully compatible with ODM Version 1.1.1. We are working on ODM2 compatibility, and should have it worked out this winter.

##Releases

To make running ODMTools easier we have included installers. Please select the one that is appropriate for your operating system

####Windows
Recommended Release:
+ [Window v1.2.5-beta](https://github.com/ODM2/ODMToolsPython/releases/download/v1.2.5_beta/ODMTools_1.2.5_Beta_Win_Installer.exe)
+ [Window v1.2.8-beta](https://github.com/ODM2/ODMToolsPython/releases/download/v1.2.8_beta/ODMTools_1.2.8_Beta_Win_Installer.exe)

####Mac
+ [Mac v1.2.5-beta](https://github.com/ODM2/ODMToolsPython/releases/download/v1.2.5_beta/ODMTools_v1.2.5-beta_Mac_installer.pkg.zip)
+ [Mac v1.2.8-beta](https://github.com/ODM2/ODMToolsPython/releases/download/v1.2.8_beta/ODMTools_v1.2.8-beta_Mac_installer.pkg.zip)

####Linux
+ *Please run from source*

Running From Source
-------------------

+ [Matplotlib-1.4.3](https://github.com/matplotlib/matplotlib/releases/tag/v1.4.3)
+ [Pandas-0.16.0](https://github.com/pydata/pandas/releases)
+ [Matplotlib](https://github.com/matplotlib/matplotlib/releases/)
+ [Pandas](https://github.com/pydata/pandas/releases)
+ [Pip](http://docs.python-guide.org/en/latest/starting/install/win.html)
+ [PyMySQL](https://github.com/petehunt/PyMySQL/)
+ [Pyodbc-3.0.7](https://code.google.com/p/pyodbc/downloads/detail?name=pyodbc-3.0.7.win-amd64-py2.7.exe)
+ [Pyodbc](https://code.google.com/p/pyodbc/downloads/)
+ [Python-2.7.9 x64/x32](http://www.python.org/download/releases/2.7.9/) (Python 3 version isn't available)
+ [Psycopg2-2.4.6](http://initd.org/psycopg/docs/install.html)
+ [Sqlalchemy-1.0.0] (http://pypi.python.org/pypi/SQLAlchemy/1.0.0)
+ [wxpython-3.0.0](http://www.wxpython.org/download.php)
+ [Psycopg2](http://initd.org/psycopg/docs/install.html)
+ [Sqlalchemy] (http://pypi.python.org/pypi/SQLAlchemy/)
+ [wxpython](http://www.wxpython.org/download.php)
+ [Numpy](http://www.scipy.org/scipylib/download.html)
+ [Scipy](https://www.scipy.org/scipylib/download.html)

Install the following software/libraries.
It is recommended to create an environment using 'Conda'.
'Conda' comes prepackaged in the Python Scientific Package Suite [Anaconda](http://continuum.io/downloads) (Available for Windows, OSX, Linux)

Example environment creation:

+ conda create -n odmtools python=2.7.8 wxpython matplotlib pandas pyodbc sqlalchemy pip psycopg2
+ conda create -n odmtools python=2.7.8 wxpython matplotlib pandas numpy scipy pyodbc sqlalchemy pip psycopg2

+ pip install pymysql

Expand Down
4 changes: 2 additions & 2 deletions doc/developer_docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@
# built documents.
#
# The short X.Y version.
version = 'beta-v1.2.0'
version = '1.2.8'
# The full version, including alpha/beta/rc tags.
release = 'beta-v1.2.0'
release = 'beta-v1.2.8'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
756 changes: 756 additions & 0 deletions doc/wxFormBuilder/frmFillGaps.fbp

Large diffs are not rendered by default.

152 changes: 152 additions & 0 deletions odmtools/common/icons/icons.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#
from wx.lib.embeddedimage import PyEmbeddedImage


_3d_graph = PyEmbeddedImage(
"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGw0lEQVR42sXXe1BU1xkA8O8+"
"dveyPHZl7/JYApEQBDEaJQ9nSBEEY1JHbR5a09ExaceQ1kg61aZD9A8ztpnptJPQaGKIcaJt"
Expand Down Expand Up @@ -1719,3 +1720,154 @@
"hNvlcPw3vJ+CK10wus5FVgFzXZAG+AOAKNxEU+FoqQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAx"
"MC0wMi0xMVQxNTowMTo0MC0wNjowMD+ZiIwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMDQtMDEt"
"MThUMTQ6MjU6MTQtMDY6MDDHhSvaAAAAAElFTkSuQmCC")

magicwand =PyEmbeddedImage(
"iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAAEgBckRAAAAGXRFWHRTb2Z0d2FyZQBBZG9i"
"ZSBJbWFnZVJlYWR5ccllPAAADZBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tl"
"dCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1l"
"dGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQu"
"Mi4yLWMwNjMgNTMuMzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJk"
"ZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50"
"YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9"
"Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRz"
"PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rv"
"c2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklw"
"dGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5z"
"LyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iaHR0cDovL2Jsb2cuYWRkaWN0ZWR0b2Nv"
"ZmZlZS5kZSIKICAgcGhvdG9zaG9wOkF1dGhvcnNQb3NpdGlvbj0iIj4KICAgPGRjOnJpZ2h0"
"cz4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+wqkg"
"ICAgICAgICAgICYjeEE7IDIwMDkgYnkgT2xpdmVyIFR3YXJkb3dza2k8L3JkZjpsaT4KICAg"
"IDwvcmRmOkFsdD4KICAgPC9kYzpyaWdodHM+CiAgIDxkYzpjcmVhdG9yPgogICAgPHJkZjpT"
"ZXE+CiAgICAgPHJkZjpsaT5PbGl2ZXIgVHdhcmRvd3NraTwvcmRmOmxpPgogICAgPC9yZGY6"
"U2VxPgogICA8L2RjOmNyZWF0b3I+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAg"
"IDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCIvPgogICAgPC9yZGY6QWx0PgogICA8L2Rj"
"OnRpdGxlPgogICA8eG1wUmlnaHRzOlVzYWdlVGVybXM+CiAgICA8cmRmOkFsdD4KICAgICA8"
"cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiLz4KICAgIDwvcmRmOkFsdD4KICAgPC94bXBS"
"aWdodHM6VXNhZ2VUZXJtcz4KICAgPElwdGM0eG1wQ29yZTpDcmVhdG9yQ29udGFjdEluZm8K"
"ICAgIElwdGM0eG1wQ29yZTpDaUFkckV4dGFkcj0iIgogICAgSXB0YzR4bXBDb3JlOkNpQWRy"
"Q2l0eT0iIgogICAgSXB0YzR4bXBDb3JlOkNpQWRyUmVnaW9uPSIiCiAgICBJcHRjNHhtcENv"
"cmU6Q2lBZHJQY29kZT0iIgogICAgSXB0YzR4bXBDb3JlOkNpQWRyQ3RyeT0iIgogICAgSXB0"
"YzR4bXBDb3JlOkNpVGVsV29yaz0iIgogICAgSXB0YzR4bXBDb3JlOkNpRW1haWxXb3JrPSIi"
"CiAgICBJcHRjNHhtcENvcmU6Q2lVcmxXb3JrPSIiLz4KICA8L3JkZjpEZXNjcmlwdGlvbj4K"
"IDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg"
"ICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PgiL5zQAABEdSURBVHja"
"Yvj//z8DCt7PwPr/LwMjCwMUPGaUZhB2fifHvCSor+is/g+4ykcMUkwvRFSqv3z58v/35Xtv"
"UIyZ2D/hP8Ms772lKT5CcMGGhob/IJphgjkjEDOABbOzs/+jOwIggFBd9J+B8f9NoKuQJYCW"
"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"
"AOxm99VU2O0FAAAAAElFTkSuQmCC")

26 changes: 26 additions & 0 deletions odmtools/controller/frmGapFill.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"""Subclass of dlgFill, which is generated by wxFormBuilder."""

from odmtools.view import clsGapFill


# Implementing dlgFill
class frmGapFill(clsGapFill.dlgFill):
def __init__(self, parent, record_service):
self.record_service = record_service
clsGapFill.dlgFill.__init__(self, parent)

# Handlers for dlgFill events.
def onOKBtn(self, event):
#TODO add validation
gapvalue= self.txtGap.Value
gaptime = self.cbGap.Value
fillvalue = self.txtFill.Value
filltime= self.cbFill.Value

self.record_service.fill_gap(gap=[gapvalue, gaptime], fill=[fillvalue, filltime])
self.Close()

def OnCancelBtn(self, event):

self.Close()
self.Destroy()
5 changes: 4 additions & 1 deletion odmtools/controller/frmLinearDrift.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ def OnBtnOKButton(self, event):
Perform Drift Correction based on given input. Catch errors if the user enters something invalid
"""
try:
self._record_service.drift_correction(float(self.txtFinalGapValue.GetValue()))
result = self._record_service.drift_correction(float(self.txtFinalGapValue.GetValue()))
if not result:
dial = wx.MessageDialog( None, "Linear drift can only be performed on one continuous data selection. \nPlease modify your selection and try again.", "Bad Input", wx.OK)
dial.ShowModal()
except Exception as e:
dial = wx.MessageDialog(None, "Unable to convert value to float %s" % e, "Bad Input",
wx.OK | wx.ICON_ERROR)
Expand Down
33 changes: 23 additions & 10 deletions odmtools/controller/frmSeriesSelector.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,13 +459,13 @@ def setFilter(self, site_code='', var_code='', advfilter=''):
:return:
"""
if site_code and var_code:
self.siteFilter = TextSearch(self.tblSeries, columns=self.tblSeries.columns[3:4],text=site_code)
self.variableFilter = TextSearch(self.tblSeries, columns=self.tblSeries.columns[6:7],text=var_code)
self.siteFilter = TextSearch(self.tblSeries, columns=self.tblSeries.columns[2:6],text=site_code)
self.variableFilter = TextSearch(self.tblSeries, columns=self.tblSeries.columns[3:8],text=var_code)
self.tblSeries.SetFilter(Chain(self.siteFilter, self.variableFilter))
elif site_code:
self.tblSeries.SetFilter(TextSearch(self.tblSeries, columns=self.tblSeries.columns[3:4], text=site_code))
self.tblSeries.SetFilter(TextSearch(self.tblSeries, columns=self.tblSeries.columns[2:6], text=site_code))
elif var_code:
self.tblSeries.SetFilter(TextSearch(self.tblSeries, columns=self.tblSeries.columns[6:7], text=var_code))
self.tblSeries.SetFilter(TextSearch(self.tblSeries, columns=self.tblSeries.columns[3:8], text=var_code))
elif advfilter:
self.tblSeries.SetFilter(advfilter)
else:
Expand All @@ -490,6 +490,14 @@ def onReadyToPlot(self, event):
except Exception as e :
object = self.tblSeries.GetSelectedObject()

self.drawPlot(object)
logger.debug("refreshing...")
self.Refresh()

logger.debug("Finish Plotting")

def drawPlot(self, object):

if not self.tblSeries.IsChecked(object):
Publisher.sendMessage("removePlot", seriesID=object.id)
Publisher.sendMessage("updateCursor", deselectedObject=object)
Expand All @@ -499,12 +507,6 @@ def onReadyToPlot(self, event):
self.pnlPlot.addPlot(self.memDB, object.id)
Publisher.sendMessage("updateCursor", selectedObject=object)

logger.debug("refreshing...")
self.Refresh()

logger.debug("Finish Plotting")


#from meliae import scanner
#scanner.dump_all_objects("plot_plotting.dat")

Expand All @@ -527,6 +529,17 @@ def getSelectedObject(self, event):
#print "Updating Cursor", editingObject.id
Publisher.sendMessage("updateCursor", selectedObject=editingObject)

def onBtnClear(self, event):
logger.debug("Clearing all selected objects from Series Catalog")
chcklist = self.tblSeries.GetCheckedObjects()

self.tblSeries.RefreshObject(self.tblSeries.editingObject)
for c in chcklist:
self.tblSeries.SetCheckState(c, False)
Publisher.sendMessage("removeMultPlot", seriesIDs= chcklist)
Publisher.sendMessage("updateCursor", deselectedObject=object)
#self.drawPlot(c)
self.Refresh()

def onReadyToEdit(self):
"""Choose a series to edit from the series selector
Expand Down
Loading

0 comments on commit 91ead6b

Please sign in to comment.