2.3.4. vacumm.misc.atime – Time utilities

Attributes:
  • RE_SPLIT_DATE
  • STR_UNIT_TYPES
Functions:
Classes:
Inheritance diagram:
 
digraph inheritancea5df1f39e4 { rankdir=TB; ratio=compress; size="6.0, 8.0"; "AbstractVariable" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled]; "CdmsObj" -> "AbstractVariable" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "Slab" -> "AbstractVariable" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "CdmsObj" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled]; "DateFormatter" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,tooltip="Tick location is seconds since the epoch. Use a :func:`strftime`"]; "Formatter" -> "DateFormatter" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "Formatter" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,tooltip="Create a string based on a tick value and location."]; "TickHelper" -> "Formatter" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "Gaps" [URL="#vacumm.misc.atime.Gaps",color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,target="_top",tooltip="Find time gaps in a variable"]; "TransientVariable" -> "Gaps" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "MaskedArray" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,tooltip="An array class with possibly masked values."]; "ndarray" -> "MaskedArray" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "Slab" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,tooltip="Slab is the cu api"]; "SpecialDateFormatter" [URL="#vacumm.misc.atime.SpecialDateFormatter",color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,target="_top",tooltip="Special formatter for dates"]; "DateFormatter" -> "SpecialDateFormatter" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "TickHelper" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled]; "TransientVariable" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,tooltip="An in-memory variable."]; "AbstractVariable" -> "TransientVariable" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "MaskedArray" -> "TransientVariable" [arrowsize=0.5,penwidth=1,style="setlinewidth(0.5)"]; "ndarray" [color=orange,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.6,shape=ellipse,style=filled,tooltip="ndarray(shape, dtype=float, buffer=None, offset=0,"]; }

Time utilities

class DateSorter(pattern=None, basename=True)[source]

Bases: object

Sort a list of date string, optionally using a date pattern

Example:

>>> from vacumm.misc.atime import DateSorter
>>> dates = ['annee 2006', 'annee 2002']
>>> ds = DateSorter('annee %Y')
>>> dates.sort(ds)
>>> print dates
['2002', '2006']
class Gaps(var, tolerance=0.1, verbose=True, dt=None, **kwargs)[source]

Bases: cdms2.tvariable.TransientVariable

Find time gaps in a variable

A gap is defined as a missing time step or data. With this class, you can:

  • get the gaps as a variable (the object itself)
  • where 1 refers to the start of gap and -1 to the end
  • print them (show())
  • plot them (plot())
  • save them in a netcdf or an ascii file (save())
Parameters:
  • var: A cdms variable with a cdms time axis
  • dt: Time step [default: minimal time step]
  • tolerance: There is a gap when dt varies of more than tolerance*min(dt) [default: 0.1]
  • keyparam: verbose Verbose mode
Example:
>>> import vacumm.misc as M
>>> import MV2
>>> time = M.axes.create_time([1,2,4,5],units='days since 2000')
>>> var = MV2.arange
plot(show=True, savefig=None, figsize=(8, 2.0), title=None, color='red', subplots_adjust={'bottom': 0.55, 'left': 0.05, 'top': 0.8}, show_time_range=True, **kwargs)[source]

Plot the gaps

Params:
  • color: Color of gaps [default: ‘red’]
  • figure: Show results on a figure if there are gaps [default: True]
  • show: Show the figure plotted if gaps are found [default: True]
  • title: Use this title for the figure
save(file)[source]

Save gaps to a netcdf or an ascii file

If the file name does not end with ‘cdf’ or ‘nc’, gaps are printed to an ascii file with the save format as displayed by (show())

Params:
  • file: Netcdf file name
show(**kwargs)[source]

Print out gaps

Parameters are passed to col_printer()

class Intervals(time_range, dt, reverse=False, roundto=None, bounds=True, lmargin=0, rmargin=None, innerbounds='co', roundmode='all')[source]

Bases: object

Iterator on intervals

Params:
  • time_range: Time range (optionally with bounds).
  • dt: Size of intervals.
  • reverse, optional: Reverse the iterator.
  • roundto, optional: Round times to this time units (like ‘hours’, etc).
  • bounds, optional: Add bounds specs to the intervals (like “co”).
  • l/rmargin, optional: Add a margin to the left and/or right of each interval. See add_margin().
  • innerbounds, optional: Add bounds specs to inner intervals (like “cc”).
  • roundmode, optional:
    • “all”: Round all dates.
    • “inner”: Round only inner dates, not first and last.
Example:
>>> for itv in Intervals(('2000','2001','co'),(2,'month')): print itv
>>> Intervals(('2000','2001','co'),12).tolist()
>>> Intervals((cdtime.comptime(2000), '2001', 'month',
... reverse=True, lmargin=(3,'hours'))
next()[source]
round(mydate)[source]
tolist()[source]
class IterDates(time_range, dt, reverse=False, roundto=None, closed=True)[source]

Bases: object

Iterator on dates

Example:

>>> from vacumm.misc.atime import IterDates
>>> for date in IterDates(('2000','2001'),(1,'month')): print date
>>> for date in IterDates(('2000','2001'),12,closed=False): print date
next()[source]
round(mydate)[source]
tolist()[source]
class SpecialDateFormatter(level, fmt=None, special_fmt=None, join=None, phase=None, **kwargs)[source]

Bases: matplotlib.dates.DateFormatter

Special formatter for dates Example: [‘00h 01/10/2000’ ‘02h’ …. ‘23h’ ‘00h 01/10/2000’] to mark days and keep hours Here the ‘phase’ is 0 (00h) and the level is 3 (=’day’)

add(mytime, amount, units=None, copy=True)

Add value to time

Params:
  • mytime: Target time, list of times or time axis.
  • amount: Value to add.
  • units, optional: Units, needed if mytime is not a time axis.
  • copy, optional: Copy list or time axis?

Example:

>>> add_time('2008-02', 3, 'days')
'2008-2-4 0:0:0.0'
add_margin(interval, lmargin, rmargin=None)[source]

Add a margin to an interval

Params:
  • interval: A time interval or selector such as ('2000', '20001', 'co') Specified times may be of any valid type.

  • lmargin: Left margin. Examples:

    • (3,'months'): explicit.
    • 'hours': Same as ``(1,'hours').
    • 4: Relative margin of size (interval[1]-interval[0)/4.
    • False: no margin.

    A negative margin decrease the size of the interval.

  • rmargin, optional: Right margin (defaults to the left).

Example:
>>> print add_margin(('2000', '2001', 'co'), (5, 'days'))
('1999-12-27 0:0:0.0', '2001-1-6 0:0:0.0', 'co')
add_time(mytime, amount, units=None, copy=True)[source]

Add value to time

Params:
  • mytime: Target time, list of times or time axis.
  • amount: Value to add.
  • units, optional: Units, needed if mytime is not a time axis.
  • copy, optional: Copy list or time axis?

Example:

>>> add_time('2008-02', 3, 'days')
'2008-2-4 0:0:0.0'
are_same_units(units1, units2)[source]

Compare time units

>>> are_same_units('days since 1900-1', 'days since 1900-01-01 00:00:0.0')
True
are_valid_units(units)[source]

Check that units are well formatted

Example:
>>> from vacumm.misc.atime import are_good_units
>>> are_good_units('months since 2000')
True
>>> are_good_units('months since 2000-01-01 10h20')
False
ascii_to_num(ss)[source]

Convert from ‘yyyy-mm-dd hh:mn:ss’ to [yyyy,mm,dd,hh,mn,ss]

Example:
>>> ascii_to_num('2000-01')
2000, 1, 1, 0, 0, 0
axis_add(mytime, amount, units=None, copy=True)

Add value to time

Params:
  • mytime: Target time, list of times or time axis.
  • amount: Value to add.
  • units, optional: Units, needed if mytime is not a time axis.
  • copy, optional: Copy list or time axis?

Example:

>>> add_time('2008-02', 3, 'days')
'2008-2-4 0:0:0.0'
ch_units(mytimes, newunits, copy=True)[source]

Change units of a CDAT time axis or a list (or single element) or cdtime times

Params:
  • mytimes: CDAT axis time object, a CDAT variable with a time axis, a valid time ot list of times.

  • newunits: New time units.

  • copy, optional: Create a new axis instead of updating the current one.

    Note

    If mytimes is True, then copy is set to False.

Return:

New time axis, or relatives times.

Example:
>>> mytimes = ch_units(time_axis,relative=False,value=False,copy=True)

Warning

In the case of a single time object or a list of them, all object that is not cdtime.reltime() object will not be converted.

check_range(this_time, time_range)[source]

Check wether a time is before, within or after a range

Params:
  • this_time: time to check (string or cdat time)
  • time_range: 2(or 3)-element range (strings or cdat times) like (‘1975’,1980-10-01’,’co)
Example:
>>> from vacumm.misc.atime import comptime, reltime, check_range
>>> check_range('2000-12', ('2000-11', '2001'))
0
>>> check_range(comptime(2000), (comptime(2000), ('2000','20001','oc')))

-1

Returns:-1 is before, 0 if within, 1 if after
compress(data)[source]

Compress along time

comptime(mytime, nummode='mpl')[source]

Convert to cdtime.comptime() format

Params:
  • mytime: Time as string, datetime, cdtime.comptime(), cdtime.reltime() or a: mod:cdms2 time axis.

  • nummod, optional: Numeric case mode.

    • "mpl": Converted using matplotlib.dates.num2date() and cdtime.comptime.
    • "julday", "cnes", "nasa": Considered as juldian days.
    • Valid time units string: Converted using cdtime.reldate.

Note

If not an cdms2 time axis, first argument may be a list. In this case, a list is also returned.

Example:
>>> from datetime import datetime ; import cdtime
>>> from vacumm.misc.atime import comptime
>>> comptime(datetime(2000,1,1))
2000-1-1 0:0:0.0
>>> comptime(cdtime.reltime(10,'days since 2008')).day
10
>>> comptime('1900-01-01').year
1900
Sea also:reltime() datetime()
daily(data, hstart=0, **kwargs)[source]

Convert to daily means

Params:
  • data: A cdms variable with a time axis.
  • hstart: First hour of daily intervals.
Example:
>>> dsst = daily(sst, hstart=12)
See also:

daily_bounds() reduce()

Return:

A cdms variable on a daily time axis

daily_bounds(taxis, hstart=0)[source]

Create a daily time bounds array from a time axis

Params:
  • taxis: A time axis or a variable with a time axis.
  • hstart, optional: First hour of each daily bounds.
datetime(mytimes, nummode='mpl')[source]

Convert to datetime.datetime format

Params:
  • mytimes: Time as string, datetime, cdtime.comptime(), cdtime.reltime(), a number, or a: mod:cdms2 time axis.

Note

If not an cdms2 time axis, first argument may be a list. In this case, a list is also returned.

Sea also:comptime() reltime() strtime() numtime()
day_of_the_year(mytime)[source]

Compute the day of the year of a specified date

detrend(var)[source]

Linear detrend

filter_time_selector(*args, **kwargs)[source]

Create a pure time selector from all arguments

All components that are not recognized as a time selection are not kept.

Params:
  • ids, optional: Special keyword to specify allowed time ids in addition to generic ones defined by cdms2.convention.time_aliases.
  • out, optional: Inverse the process by removing all time selections (see filter_selector())?
  • keeppos, optional: Remove positional components (see filter_selector())?
  • noslice, optional: Remove slices (see filter_selector())?
  • Positional argument can be coordinates intervals, slices, dictionaries or cdms2 selectors.
  • Optional arguments must have a key identified as time, and a value as coordinates or slice.
fixcomptime(mytime, decimals=3, copy=False)[source]

Fix the 60s bug of cdtime.comptime objects

Params:
  • mytime: Comptime or list of comptimes
from_utc(mytime, new_tz)[source]
get_dt(axis, units=None)[source]

Returns the time steps of an axis. Value is computed according to the median time step, and returned in original or specified units.

Params:
  • axis: A time axis.
  • units, optional: Another valid unit type (cdtime or string)
Return:

Time step

Example:
>>> get_dt(var.getTime()
>>> get_dt(var.getTime(), cdtime.Months)
>>> get_dt(var.getTime(), 'months')
See also:

unit_type()

has_time_pattern(ss)[source]

Does ss string contains date pattern like %Y?

hourly(data, frequency=24, **kwargs)[source]

Convert to hourly means

Params:
  • data: A cdms variable.
  • frequency Used when different from hourly is requested [default: 24]
Return:

A cdms variable on a hourly time axis

hourly_bounds(taxis, mstart=0)[source]

Create a hourly time bounds array from a time axis

Params:
  • taxis: A time axis or a variable with a time axis.
  • mstart, optional: First minute of each daily bounds.
hourly_exact(data, time_units=None, maxgap=None, ctlims=None)[source]

Linearly interpolate data at exact beginning of hours

Params:
  • data: Cdms variable.
  • time_units: Change time units.
  • maxgap: Maximal gap in hours to enable interpolation [default: None].
interp(vari, outtimes, squeeze=1, **kwargs)[source]

Linear interpolation in time

Params:
  • vari**: A cdms variable with a time axis
  • outtimes: A time axis, or a list (or single element) of date strings, comptime, reltime, datetime times.
  • squeeze: Remove uneeded output dimensions [default: 1]
  • all other keywords are passed to interp1d().
interp_clim(clim, times, method='linear', day=15)[source]

Interpolate a climatology at specified dates

is_axistime(mytime)[source]

Check if a time is a cdms2 time axis

Simple shortcut to istime().

Params:
  • mytime: object to check
Sea also:

istime() is_comptime() is_reltime() is_cdtime() is_time()

is_cdtime(mytime)[source]

Check if a mytime is a cdat time (from cdtime)

Equivalent to:

is_reltime(mytime) or is_comptime()
Params:
  • mytime: object to check
Example:
>>> import cdtime
>>> from datetime import datetime
>>> from vacumm.misc.atime import is_cdtime
>>> is_cdtime(cdtime.reltime(2,'days since 2000'))
True
>>> is_cdtime(cdtime.comptime(2000,2))
True
>>> is_cdtime(datetime(2000,2,1)
False
See also:

is_comptime()is_reltime() is_time() is_datetime()

is_comptime(mytime)[source]

Check if a time is a cdat comptime (from cdtime)

Params:
  • mytime: object to check
Sea also:

is_datetime() is_reltime() is_cdtime() is_time()

is_datetime(mytime)[source]

Check if a time is a datetime.datetime time

Params:
  • mytime: object to check
Sea also:

is_comptime() is_reltime() is_cdtime() is_time()

is_in_time_interval(this_time, time_range)[source]

Check if a time is in specified closed/open range

Params:
  • this_time: time to check (string or cdat time)
  • time_range: 2(or 3)-element range (strings or cdat times) like (‘1975’,1980-10-01’,’co)
Example:
>>> is_in_range('2000-12', ('2000-11', '2001'))
True
Sea also:

check_range()

is_interval(interval)[source]

Check if interval is a valid time interval

Params:
  • interval: It should be in the following generic form

(<time0>,<time1>[,<bounds>]), where <time?> is a valid time (see time_type() and is_valid()) and <bounds> are interval bounds such as "co".

is_numtime(mytime)[source]

Simply check if a mytime is a number !

Params:
  • mytime: object to check
Sea also:

is_datetime() is_comptime() is_reltime() is_cdtime() is_time()

is_reltime(mytime)[source]

Check if a time is a cdat reltime (from cdtime)

Params:
  • mytime: object to check
Sea also:

is_comptime() is_reltime() is_cdtime() is_time()

is_strtime(mytime)[source]

Check if a time is a valid string date

Params:
  • mytime: object to check
Sea also:

is_datetime() is_comptime() is_reltime() is_cdtime() is_time()

is_time(mytime, alsonum=False)[source]

Check if mytime is a CDAT time, a datetime.datetime or date valid string.

Equivalent to:

timetype(mytime) is not None
Sea also:is_datetime() is_reltime() is_cdtime() is_numtime() is_time()
itv_intersect(itv1, itv2, bb=None, aslogical=False)[source]

Return the intersection of 2 time intervals

Return:The interval or False if not intersection is found
itv_union(itv1, itv2, bb=None)[source]

Return the union of 2 time intervals

julday(mytime, mode='cnes')[source]

Convert to a CNES julian days, i.e. days from 1950 (CNES) or 1958 (NASA)

Params:
  • mytime: Time as string, datetime, cdtime.comptime(), cdtime.reltime(), a number or a: mod:cdms2 time axis.

  • ref, optional: computation mode

    • "cnes": days from 1958-01-01
    • "nasa": days from 1958-01-01

Note

If not an cdms2 time axis, first argument may be a list. In this case, a list is also returned.

Sea also:comptime() reltime() datetime() strtime()
lindates(first, last, incr, units=None)[source]

Create a list of linearly incrementing dates

Params:
  • first: first date
  • last: first date
  • incr: increment step OR number of steps if units is None
  • units: units like “days” (see unit_type()) or None
Example:
>>> dates = lindates('2000', '2002-05', 3, 'months')
>>> dates = lindates('2000', '2002-05', 8)
Return:
  • list of cdtime.comptime() dates
midnight_date(mydate)[source]

Round a date to the closest midnight

Example:
>>> print midnight_date('2010-11-29 23:10')
2010-11-30 0:0:0.0
Return:

cdtime.comptime date at midnight

midnight_interval(date)[source]

Round dates of a closed interval to the closest midnight

Example:
>>> print midnight_interval('2010-11-29 23:10')
(2010-11-30 0:0:0.0, 2010-11-30 0:0:0.0, 'ccb')
>>> print midnight_interval(('2010-11-29 23:10','2010-11-30 04'))
(2010-11-30 0:0:0.0, 2010-11-30 0:0:0.0, 'ccb')
Return:

cdtime.comptime interval

monthly(data, **kwargs)[source]

Convert to monthly means

Params:
  • data: A cdms variable.
Return:

A cdms variable on a hourly time axis

mpl(mytimes, copy=True)[source]

Convert to Matplotlib units.

Time objects (or list of them) are converted to pure numerical values.

Params:
  • mytimes: Time object (or list), or time axis.
  • copy, optional: Copy time axis or not?

Note

This function does not use ch_units(). It uses Matplotlib internal function matplotlib.dates.date2num() instead.

Example:
>>> taxis = create_time((0, 10.), 'hours since 2000-01-01')
>>> maxis = mpl(taxis)
>>> print maxis[0]
730120.0
>>> print maxis.units
days since 0001
notz(mytime)[source]

Suppres time zone

Params:
Return:
now(utc=False)[source]

Return current time as cdtime.comptime()

Params:
  • utc, optional: Return UTC time [default: False]
num_to_ascii(yyyy=1, mm=1, dd=1, hh=0, mn=0, ss=0)[source]

Convert from [yyyy,mm,dd,hh,mn,ss] or component time or relative time to ‘yyyy-mm-dd hh:mn:ss’

Params:
  • yyyy: int year OR component OR relative time (cdms) [default: 1]
  • mm: month [default: 1]
  • dd: day [default: 1]
  • hh: hour [default: 0]
  • mn: minute [default: 0]
  • ss: second [default: 0]
Example:
>>> num_to_ascii(month=2)
0001-02-01 00:00:00
>>> num_to_ascii(comptime(2000,10))
2000-10-01 00:00:00
numtime(mytime)[source]

Convert to a numeric time using date2num()

Params:
  • mytime: Time as string, datetime, cdtime.comptime(), cdtime.reltime(), a number or a: mod:cdms2 time axis.

Note

If not an cdms2 time axis, first argument may be a list. In this case, a list is also returned.

Sea also:comptime() reltime() datetime() strtime()
paris_to_utc(mytime)[source]
pat2freq(pattern)[source]

Get the maximal frequency (“days”, “hours”, etc) associated with a date pattern

Params:
  • pattern: A string containg date patterns (like ‘%d’ or ‘%%d’)
Return:

One of None, "seconds", "minutes", "hours", "days", "months", "yaers".

Example:
>>> print pat2freq('%d/%m/%Y')
days
pat2glob(pattern, esc=False)[source]

Convert a date pattern to a rough global matching pattern

Note

A global matching pattern is a UNIX file pattern. See glob.glob() for more information.

Warning

The output global pattern is NOT strict, and thus may embed more than requested by the date pattern.

Params:
  • pattern: A string containg date patterns (like ‘%d’ or ‘%%d’)
  • esc, optional: If True, date patterns are escaped (like ‘%%d’)
plot_dt(file, time_axis=None, nice=False)[source]

Plot axis time step of a netcdf file

reduce(vari, geterr=False, **kwargs)[source]

Average time steps that have the same bounds or time

Params:
  • vari: Aray with a valid time axis.
Example:
>>> taxis = sst.getTime()
>>> tbounds = daily_bounds(taxis, hstart=12)
>>> taxis.setBounds(tbounds)
>>> nightly_sst = reduce(sst)
reduce_old(data, comp=True, fast=True)[source]

Reduce a variable in time by performing time average on time step that have the same time or time bounds.

  • data: A cdms variable with first axis supposed to be time.
  • comp: Call to compress() before reducing [default: True]
  • fast: Convert to pure numpy before processing, then convert back to cdms variable [default: True]

Return: The new variable on its new time axis.

reltime(mytime, units)[source]

Convert to func:cdtime.reltime format

Params:
  • mytime: Time as string, datetime, cdtime.comptime(), cdtime.reltime(), a number or a: mod:cdms2 time axis.

Note

If not an cdms2 time axis, first argument may be a list. In this case, a list is also returned.

Sea also:comptime() datetime() strtime() numtime()
round_date(mydate, round_type, mode='round')[source]

Round a date to a step in year, month, day, hour, minute or second

Params:
  • mydate: A date compatible with comptime().

  • round_type: A string like “year” or a tuple like (3, “year”).

  • mode, optional: Rounding mode

    • "ceil": Choose the upper time.
    • "floor": Choose the lower time.
    • Else choose the nearest.
round_interval(time, round_type, mode='inner')[source]

Round an time interval using round_date()

Params:
  • time: A time interval like (time0, time1, 'cce')

  • round_type: A string like “year” or a tuple like (3, “year”).

  • mode, optional: Rounding mode

    • "inner": Upper for the lower bound and lower for the upper bound.
    • "outer": Opposite to “inner”
    • tuple: first is applied to lower bound, second to upper bound.
    • Else, passed to round_date() and applied to both bounds.
selector(*args, **kwargs)

Create a pure time selector from all arguments

All components that are not recognized as a time selection are not kept.

Params:
  • ids, optional: Special keyword to specify allowed time ids in addition to generic ones defined by cdms2.convention.time_aliases.
  • out, optional: Inverse the process by removing all time selections (see filter_selector())?
  • keeppos, optional: Remove positional components (see filter_selector())?
  • noslice, optional: Remove slices (see filter_selector())?
  • Positional argument can be coordinates intervals, slices, dictionaries or cdms2 selectors.
  • Optional arguments must have a key identified as time, and a value as coordinates or slice.
strftime(fmt, mytime=None)[source]

Convert current time, datetime, cdtime or string time to strftime

Params:
  • fmt: Time format with date patterns, like "%Y-%m-%d".
  • mytime, optional: If None, takes current time using
Examples:
>>> print strftime('%Y-%m-%d')
2014-02-25
>>> ctime = strftime('%Hh%M', '2020')
00h00
Sea also:

datetime.datetime.strftime() and this link.

strptime(mytime, fmt)[source]

Parse a string according to a format to retreive a component time

Params:
  • fmt: Time format with date patterns, like "%Y-%m-%d".
  • mytime: Date string.
Example:
>>> print strptime('25 Jan 2000, '%d %b %Y').month
1
Sea also:

datetime.datetime.strptime() and this link.

strtime(mytime)[source]

Convert to valid string date

Params:
  • mytime: Time as string, datetime, cdtime.comptime(), cdtime.reltime(), a number, or a: mod:cdms2 time axis.

Note

If not an cdms2 time axis, first argument may be a list. In this case, a list is also returned.

Sea also:comptime() reltime() datetime() numtime()
tic()[source]

Launch a time counter at the begining of your program.

Return:
  • A time to be used with the toc() function.
Examples:
>>> stime = tic()
time_selector(arg0, arg1=None, bounds=None, round=False, utc=True)[source]

Time selector formatter that returns start date and end date as component times

Example:
>>> selector('2006','2007') # between two dates
>>> selector(comptime(1950)) # from a date to now
>>> selector(1,'month','co') # from now into the past
time_split(what, how, roundit=None, bb='co')[source]

Generic function to split an interval into subintervals

Params:
  • what: Time interval, dates or time axis that can be converted using comptime().

  • how: Splitting specifications.

    1. A number: divide the interval in equal subintervals.
    2. A single or a list of dates: build subintervals with theses dates.
    3. A IterDates instance: generate a list of dates and make as in 2.
    4. A Intervals instance: directly generate a list of intervals.
  • roundit, optional: Round interval. Valid only if how is an time step specification such as (1,'year') or "year" (see Intervals).

time_split_nmax(what, nmax, roundit=True)[source]

Smartly split an interval with a length into subintervals of max length

time_type(mytime, out='string', check=False)[source]

Get the type of time

Params:
  • mytime: A time of one of the following types: cdtime.comptime(), cdtime.reltime(), datetime.datetime() or a date string.

  • out, optional: Output format, one of:

    • "string": Return one of "comptime", "reltime" "datetime", "strtime", "numtime".
    • "type": Simply return result of type(mytime)
    • "func": Return the function used to convert to this type : comptime(), reltime(), datetime(), numtime().
Return:

None if not a time, or see out.

Example:
>>> time_type('2000-10')
'str'
>>> time_type(cdtime.comptime(2000,10), out='func')
<function comptime at 0x31c4aa0>
to_utc(mytime, old_tz)[source]
toc(stime=0.0)[source]

Compute the cost of the computation and display in an adapted format.

Params:
  • stime, optional: The initial time given by the tic() function.
Return:
  • Display the time spent in the program.
Examples:
>>> stime = tic()
>>>
>>> toc(stime=stime)
trend(var)[source]

Get linear trend

tsel2slice(taxis, *args, **kwargs)[source]

Convert time selections on a time axis to a valid slice or None

Params:
  • asind, optional: Return indices instead of a slice.
  • nonone, optional: Return the full slice instead of None if everything is selected.
  • Positional argument can be coordinates intervals, slices, dictionaries or cdms2 selectors.
  • Optional arguments must have a key identified as time or be the axis id, and a value as coordinates or slice.
Return:
  • A slice or (i,j,k) when possible.
  • None or the full slice if no slice needed (everything is selected).
  • False if no intersection is found.
Examples:
>>> myslice = tsel2slice(taxis, ('2000', '2002', 'co'), time=slice(4,6))
>>> myslice = tsel2slice(taxis, cdms2.selectors.Selector(lon=(5,6), time=('2000','2002'))
>>> myslice = tsel2slice(taxis, slice(10,12), dict(time=slice(4,5), time=('2000','2002'))
tz_to_tz(mytime, old_tz, new_tz, copy=True)[source]

Convert time from one time zone to another one

unit_type(units, string_type=False, s=True, raiseerr=True)[source]

Returns a type of units in a suitable form with checkings.

Params:
  • units: A valid string or cdtime type of units.
  • string_type: Returns a string type instead of a cdtime type [default: False]
Return:

A valid string or cdtime type of units

Example:
>>> unit_type('minutes')
>>> unit_type(cdtime.Minutes,True)
utc_to_paris(mytime)[source]
yearly(data, **kwargs)[source]

Convert to yearly means

Params:
  • data: A cdms variable.
Return:

A cdms variable on a hourly time axis