[Scipy-svn] r2601 - trunk/Lib/sandbox/timeseries

scipy-svn at scipy.org scipy-svn at scipy.org
Tue Jan 23 15:05:29 CST 2007


Author: pierregm
Date: 2007-01-23 15:05:27 -0600 (Tue, 23 Jan 2007)
New Revision: 2601

Modified:
   trunk/Lib/sandbox/timeseries/CHANGELOG
   trunk/Lib/sandbox/timeseries/tdates.py
Log:
cf changelog

Modified: trunk/Lib/sandbox/timeseries/CHANGELOG
===================================================================
--- trunk/Lib/sandbox/timeseries/CHANGELOG	2007-01-23 20:42:51 UTC (rev 2600)
+++ trunk/Lib/sandbox/timeseries/CHANGELOG	2007-01-23 21:05:27 UTC (rev 2601)
@@ -1,3 +1,4 @@
+#2007-01-23 : tdates : forced a 'U' to 'D' when using asfreq
 #2007-01-15 : tmulti : Add the module and its tests, to support multi-variable series
 #           : tdates : Some minor bug fixes
 #           : tseries: Fixed a bug in __new__ when data are lists

Modified: trunk/Lib/sandbox/timeseries/tdates.py
===================================================================
--- trunk/Lib/sandbox/timeseries/tdates.py	2007-01-23 20:42:51 UTC (rev 2600)
+++ trunk/Lib/sandbox/timeseries/tdates.py	2007-01-23 21:05:27 UTC (rev 2601)
@@ -456,7 +456,7 @@
 def asfreq(date, toFreq, relation="BEFORE"):
     """Returns a date converted to another frequency `toFreq`, according to the
     relation `relation` ."""
-    toFreq = corelib.fmtFreq(toFreq)
+    tofreq = corelib.fmtFreq(toFreq)
     _rel = relation.upper()[0]
     if _rel not in ['B', 'A']:
         msg = "Invalid relation '%s': Should be in ['before', 'after']"
@@ -465,12 +465,18 @@
     if not isinstance(date, Date):
         raise DateError, "Date should be a valid Date instance!"
 
-    if date.freq == toFreq:
+    if date.freq == 'U':
+        warnings.warn("Undefined frequency: assuming daily!")
+        fromfreq = 'D'
+    else:
+        fromfreq = date.freq
+    
+    if fromfreq == tofreq:
         return date
     else:
-        value = cseries.asfreq(numeric.asarray(date.value), date.freq, toFreq, _rel)
+        value = cseries.asfreq(numeric.asarray(date.value), fromfreq, tofreq, _rel)
         if value > 0:
-            return Date(freq=toFreq, value=value)
+            return Date(freq=tofreq, value=value)
         else:
             return None
             
@@ -657,11 +663,16 @@
         # Note: As we define a new object, we don't need caching
         if freq is None:
             return self
-        freq = corelib.fmtFreq(freq)
-        if freq == self.freq:
+        tofreq = corelib.fmtFreq(freq)
+        if tofreq == self.freq:
             return self        
+        if self.freq == 'U':
+            warnings.warn("Undefined frequency: assuming daily!")
+            fromfreq = 'D'
+        else:
+            fromfreq = self.freq
         _rel = relation.upper()[0]
-        new = cseries.asfreq(numeric.asarray(self), self.freq, freq, _rel)
+        new = cseries.asfreq(numeric.asarray(self), fromfreq, tofreq, _rel)
         return DateArray(new, freq=freq)
     #......................................................
     def find_dates(self, *dates):
@@ -676,17 +687,7 @@
         if fromnumeric.size(c) == 0:
             raise ValueError, "Date out of bounds!"
         return c  
-#    def find_dates_alt(self, *dates):
-#        "Returns the indices corresponding to given dates, as an array."
-#        ifreq = self.freq
-#        c = numpy.zeros(self.shape, bool_)
-#        dates = date_array([d for d in corelib.flatargs(*dates)]).asfreq(ifreq)
-#        for d in numeric.asarray(dates):
-#            c += (self == d)
-#        c = c.nonzero()
-#        if fromnumeric.size(c) == 0:
-#            raise ValueError, "Date out of bounds!"
-#        return c  
+
     def date_to_index(self, date):
         "Returns the index corresponding to one given date, as an integer."
         if self.isvalid():



More information about the Scipy-svn mailing list