# Creating seasonal masks

## Question:

How can I create a seasonalmask?

## Example:

## Explanation:

One of the easiest ways to create a seasonal mask is to usethe MOD() function to convert the underlying units of your data'stime axis into the number of those units elapsed during a year.Use the ncdump program with the "-h" flag to get detailedinformation on your data's time axis. In the case of a daily timeseries, as in Reynolds SST, you might have:

use reynolds_sst_wk

let year_days = mod(t[gt=wsst],365.2425)

**Note:** If your time origin is not at a year boundaryyour definition may have to subtract in order to get the correctnumber of elapsed units since year begin.

**Note:** If you're more comfortable with dates, you canget the Julian day number for any given date with

define axis/T0=1-jan-0000/T=1-jan-0000:31-dec-0000:1/unit=day tjday

let TJ = T[gt=tjday]

then, for example,

`TJ[t=15-mar]`

can be used as an expression for the Julian day number of 15-MARas in

yes? say The Ides of March is Julian day `TJ[t=15-mar]`

The Ides of March is Julian day 74

The limitation of this is that the Julian day calculation willnot regard Feb as a 28.2425 day month. Rather it will be eithera 28 or a 29 day month, depending upon the year (0000 is a leapyear - use 0001 for a non-leap year)

## Solution:

Here's the journal script that produced the graphic above

! A journal script demonstrating one way to create

! a seasonal mask.

!

! First use ncdump to see what the units and T0

! for the reynolds time axis are

!

! > ncdump -h reynolds_sst_wk.cdf

!

! REYNOLDS_T:units = "DAY since 0000-12-30 00:00:00" ;

! REYNOLDS_T:time_origin = "30-DEC-0000" ;

!

! Now create a variable that has values of day number

! but that is defined on a grid with the reynolds time axis.

use reynolds_sst_wk

let year_days = mod(t[gt=wsst],365.2425)

! Now create a mask which has a value of 1 only for days

! 60 to 151 (March to May).

! All other days will be flagged as missing values.

let daily_mask_a = IF year_days gt 59 then 1

let daily_mask_b = IF year_days lt 152 then 1

let daily_mask = daily_mask_a * daily_mask_b

! Use one definition of springiness for the spring and

! another for the rest of the year.

let spring = fsst + 10

let rest = fsst - 10

let/title="liklihood of spring" springiness = IF daily_mask THEN spring ELSE rest

! Set the desired region and plot the result

set region/x=180:270/y=10s:0n/t=15-jan-1985:15-jan-2000

fill/transpose springiness[y=@ave]