Source code for gme.base.gmeBase

# Copyright (C) 2012  VT SuperDARN Lab
# Full license can be found in LICENSE.txt
# 
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.


"""
.. module:: gmeBase
   :synopsis: A base class for gme data.  Allows definition of common routines

.. moduleauthor:: AJ, 20130129

*****************************
**Module**: gmeBase
*****************************
**Classes**:
	* :class:`gmeData`
"""

[docs]class gmeData: """a class to represent a a record of gme data. Other classes will extend this class **Members**: * **time** (`datetime <http://tinyurl.com/bl352yx>`_): an object identifying which time these data are for * **dataSet** (str): a string indicating the dataset * **info** (str): information about where the data come from. *Please be courteous and give credit to data providers when credit is due.* .. note:: If any of the members have a value of None, this means that they could not be read for that specific time **Methods**: * :func:`parseDb` * :func:`toDbDict` **Example**: :: emptyObj = gme.base.gmeData() written by AJ, 20130131 """
[docs] def parseDb(self,dbDict): """This method is used to parse a dictionary of gme data from the mongodb into a :class:`gmeData` object. .. note:: In general, users will not need to use this. **Belongs to**: :class:`gmeData` **Args**: * **dbDict** (dict): the dictionary from the mongodb **Returns**: * Nothing. **Example**: :: myObj.parseDb(mongoDbDict) written by AJ, 20130129 """ #iterate over the mongo dict for attr, val in dbDict.iteritems(): #check for mongo _id attribute if(attr == '_id'): pass elif(attr == 'kp'): for i in range(len(dbDict['kp'])): num = str(int(dbDict['kp'][i])) mod = dbDict['kp'][i] - int(dbDict['kp'][i]) if(mod == .3): mod = '-' elif(mod == .7): mod = '+' else: mod = '' self.kp.append(num+mod) else: #assign the value to our object try: setattr(self,attr,val) except Exception,e: print e print 'problem assigning',attr
[docs] def toDbDict(self): """This method is used to convert a :class:`gmeData` object into a mongodb data dictionary. .. note:: In general, users will not need to worry about this **Belongs to**: :class:`gmeData` **Args**: * Nothing. **Returns**: * **dbDict** (dict): a dictionary in the correct format for writing to the mongodb **Example**: :: mongoDbDict = myObj.todbDict() written by AJ, 20130129 """ #initialize a new dictionary dbDict = {} #create dictionary entries for all out our attributes for attr, val in self.__dict__.iteritems(): if(attr == 'kp'): dbDict['kp'] = [] for i in range(len(self.kp)): num = int(self.kp[i][0:1]) mod = self.kp[i][1:2] if(mod == '+'): num += .7 elif(mod == '-'): num += .3 else: num += .5 dbDict['kp'].append(num) else: dbDict[attr] = val return dbDict
def __repr__(self): myStr = self.dataSet+' record FROM: '+str(self.time)+'\n' for key,var in self.__dict__.iteritems(): myStr += key+' = '+str(var)+'\n' return myStr def __init__(): self.time = None self.dataSet = None self.info = None