Hi, with limited knowledge on python and arcpy, I tried to modified script from former staff in my office with no success.
The existing script is:
- Try to calculate number of consecutive days without rainfall (rainfall < 1mm) based on daily CHIRPS data with naming convention "chirps-v2.0.YYYY.MM.DD.tif"
- The calculation required number of days without rain from the previous day. If this data not available, it will skipped to next data.
- Let say, the data start from 1 Jan 1981, then the script will skip this date. And continue the process for the next day (2 Jan 1981) with following process:
- IF(chirps-v2.0.1981.01.01.tif <1, 1, 0) and save as cli_chirps_dslr_19810102.tif
- IF(chirps-v2.0.1981.01.02.tif <1, cli_chirps_dslr_19810102.tif + 1, cli_chirps_dslr_19810102.tif = 0) and save as cli_chirps_dslr_19810103.tif
- and so on.
And now I would like to use the script and modified some part to calculate similar approach with rainfall > 50mm, but using Dekad CHIRPS data with naming convention
chirps-v2.0.1981.01.1.tif
chirps-v2.0.1981.01.2.tif
chirps-v2.0.1981.01.3.tif
chirps-v2.0.1981.02.1.tif
chirps-v2.0.1981.02.2.tif
..
..
chirps-v2.0.2020.04.3.tif
I got an error because the script try to read based on Date information, after finished process chirps-v2.0.1981.01.03.tif the scipt will continue to find chirps-v2.0.1981.01.04.tif and couldn't find the data then error.
Any reference or example on how to make it work?
Below is the error, script and few example of the data (subset from area with smaller size).

....
found chirps-v2.0.2001.01.2.tif in the dekad rainfall folder
found chirps-v2.0.2016.07.2.tif in the dekad rainfall folder
found chirps-v2.0.1994.11.2.tif in the dekad rainfall folder
found chirps-v2.0.2000.01.2.tif in the dekad rainfall folder
found chirps-v2.0.2017.07.2.tif in the dekad rainfall folder
found chirps-v2.0.1995.11.2.tif in the dekad rainfall folder
execute first rainy data from date 1981011
creating precipgt50 data 1981-01-02 from dekad rainfall data from 1981-01-01
1981-01-02
Processing chirps_precipgt50_1981012.tif
file chirps_precipgt50_1981012.tif is created
start reading existing PRECIPgt50 Dataset....
looking for file with naming chirps_precipgt50_YYYYMMD
found chirps_precipgt50_1981012.tif in the PRECIPgt50 folder
PRECIPgt50 Data found. Looking for latest PRECIPgt50 Data...
next dekad data is available...
start processing next PRECIPgt50...
Processing PRECIPgt50 from Z:\Temp\DryWetSeason\Output\chirps_precipgt50_1981012.tif and Z:\Temp\DryWetSeason\Dekad\chirps-v2.0.1981.01.2.tif
PRECIPgt50 File chirps_precipgt50_1981013.tif is created
next dekad data is available...
start processing next PRECIPgt50...
Processing PRECIPgt50 from Z:\Temp\DryWetSeason\Output\chirps_precipgt50_1981013.tif and Z:\Temp\DryWetSeason\Dekad\chirps-v2.0.1981.01.3.tif
PRECIPgt50 File chirps_precipgt50_1981014.tif is created
next dekad data is not available. Exit...
next dekad data is not available. Exit...
next dekad data is not available. Exit...
next dekad data is not available. Exit...
next dekad data is not available. Exit...
next dekad data is not available. Exit...
next dekad data is available...
start processing next PRECIPgt50...
Processing PRECIPgt50 from Z:\Temp\DryWetSeason\Output\chirps_precipgt50_19810110.tif and Z:\Temp\DryWetSeason\Dekad\chirps-v2.0.1981.01.1.tif
Traceback (most recent call last):
File "PRECIPgt50.py", line 118, in <module>
list = create_PRECIPgt50('Z:\\Temp\\DryWetSeason\\Output','Z:\\Temp\\DryWetSeason\\Dekad', 50)
File "PRECIPgt50.py", line 107, in create_PRECIPgt50
execute_PRECIPgt50(last_date, _tiffolder, _PRECIPgt50_folder, threshold)
File "PRECIPgt50.py", line 50, in execute_PRECIPgt50
outPRECIPgt50Con = Con(Raster(next_dekaddata) < int(threshold), Raster(last_precipgt50file)+1, 0)
RuntimeError: ERROR 000732: Input Raster: Dataset Z:\Temp\DryWetSeason\Output\chirps_precipgt50_19810110.tif does not exist or is not supported
Z:\Temp\DryWetSeason>
<SPAN class="keyword token">import</SPAN> os
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>sa <SPAN class="keyword token">import</SPAN> <SPAN class="operator token">*</SPAN>
<SPAN class="keyword token">from</SPAN> datetime <SPAN class="keyword token">import</SPAN> date<SPAN class="punctuation token">,</SPAN> timedelta
<SPAN class="comment token"># to execute first PRECIPgt50 data</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">execute_first_PRECIPgt50</SPAN><SPAN class="punctuation token">(</SPAN>_tiffolder<SPAN class="punctuation token">,</SPAN> _PRECIPgt50Folder<SPAN class="punctuation token">,</SPAN> threshold<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
sr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4326</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"looking at the first dekad rainfall data in tif folder..."</SPAN><SPAN class="punctuation token">)</SPAN>
dekad_list <SPAN class="operator token">=</SPAN> create_dekad_List<SPAN class="punctuation token">(</SPAN>_tiffolder<SPAN class="punctuation token">)</SPAN>
first_date <SPAN class="operator token">=</SPAN> min<SPAN class="punctuation token">(</SPAN>dekad_list<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"execute first rainy data from date "</SPAN><SPAN class="operator token">+</SPAN>first_date<SPAN class="punctuation token">)</SPAN>
first_data_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">'chirps-v2.0.{0}.{1}.{2}.tif'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>first_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> first_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> first_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
first_dekad_data <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_tiffolder<SPAN class="punctuation token">,</SPAN> first_data_name<SPAN class="punctuation token">)</SPAN>
dekad_Date <SPAN class="operator token">=</SPAN> date<SPAN class="punctuation token">(</SPAN>int<SPAN class="punctuation token">(</SPAN>first_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>first_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>first_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
precipgt50_date <SPAN class="operator token">=</SPAN> dekad_Date <SPAN class="operator token">+</SPAN> timedelta<SPAN class="punctuation token">(</SPAN>days<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"creating precipgt50 data "</SPAN><SPAN class="operator token">+</SPAN>str<SPAN class="punctuation token">(</SPAN>precipgt50_date<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">+</SPAN> <SPAN class="string token">" from dekad rainfall data from "</SPAN><SPAN class="operator token">+</SPAN>str<SPAN class="punctuation token">(</SPAN>dekad_Date<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
PRECIPgt50Year <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>precipgt50_date<SPAN class="punctuation token">.</SPAN>year<SPAN class="punctuation token">)</SPAN>
PRECIPgt50month <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>precipgt50_date<SPAN class="punctuation token">.</SPAN>month<SPAN class="punctuation token">)</SPAN>
PRECIPgt50day <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>precipgt50_date<SPAN class="punctuation token">.</SPAN>day<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>str<SPAN class="punctuation token">(</SPAN>precipgt50_date<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
PRECIPgt50Filename <SPAN class="operator token">=</SPAN> <SPAN class="string token">'chirps_precipgt50_{0}{1}{2}.tif'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>PRECIPgt50Year<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> PRECIPgt50month<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> PRECIPgt50day<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Processing "</SPAN><SPAN class="operator token">+</SPAN>PRECIPgt50Filename<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
outCon <SPAN class="operator token">=</SPAN> Con<SPAN class="punctuation token">(</SPAN>Raster<SPAN class="punctuation token">(</SPAN>first_dekad_data<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token"><</SPAN> int<SPAN class="punctuation token">(</SPAN>threshold<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN>
outCon<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_PRECIPgt50Folder<SPAN class="punctuation token">,</SPAN> PRECIPgt50Filename<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>DefineProjection_management<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_PRECIPgt50Folder<SPAN class="punctuation token">,</SPAN> PRECIPgt50Filename<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckInExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"file "</SPAN> <SPAN class="operator token">+</SPAN> PRECIPgt50Filename <SPAN class="operator token">+</SPAN> <SPAN class="string token">" is created"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># to execute next PRECIPgt50 data</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">execute_PRECIPgt50</SPAN><SPAN class="punctuation token">(</SPAN>_lastdate<SPAN class="punctuation token">,</SPAN> _tiffolder<SPAN class="punctuation token">,</SPAN> _PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> threshold<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
sr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4326</SPAN><SPAN class="punctuation token">)</SPAN>
date_formatted <SPAN class="operator token">=</SPAN> date<SPAN class="punctuation token">(</SPAN>int<SPAN class="punctuation token">(</SPAN>_lastdate<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>_lastdate<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>_lastdate<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
last_precipgt50name <SPAN class="operator token">=</SPAN> <SPAN class="string token">'chirps_precipgt50_{0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>_lastdate<SPAN class="punctuation token">)</SPAN>
last_precipgt50file <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> last_precipgt50name<SPAN class="punctuation token">)</SPAN>
next_dekadname <SPAN class="operator token">=</SPAN> <SPAN class="string token">'chirps-v2.0.{0}.{1}.{2}.tif'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>_lastdate<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> _lastdate<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> _lastdate<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
next_dekaddata <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_tiffolder<SPAN class="punctuation token">,</SPAN> next_dekadname<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>next_dekaddata<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"next dekad data is available..."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"start processing next PRECIPgt50..."</SPAN><SPAN class="punctuation token">)</SPAN>
new_precipgt50_date <SPAN class="operator token">=</SPAN> date_formatted <SPAN class="operator token">+</SPAN> timedelta<SPAN class="punctuation token">(</SPAN>days<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
PRECIPgt50Year1 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>new_precipgt50_date<SPAN class="punctuation token">.</SPAN>year<SPAN class="punctuation token">)</SPAN>
PRECIPgt50month1 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>new_precipgt50_date<SPAN class="punctuation token">.</SPAN>month<SPAN class="punctuation token">)</SPAN>
PRECIPgt50day1 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>new_precipgt50_date<SPAN class="punctuation token">.</SPAN>day<SPAN class="punctuation token">)</SPAN>
new_precipgt50_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">'chirps_precipgt50_{0}{1}{2}.tif'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>PRECIPgt50Year1<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> PRECIPgt50month1<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> PRECIPgt50day1<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Processing PRECIPgt50 from "</SPAN><SPAN class="operator token">+</SPAN>last_precipgt50file<SPAN class="operator token">+</SPAN><SPAN class="string token">" and "</SPAN><SPAN class="operator token">+</SPAN>next_dekaddata<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
outPRECIPgt50Con <SPAN class="operator token">=</SPAN> Con<SPAN class="punctuation token">(</SPAN>Raster<SPAN class="punctuation token">(</SPAN>next_dekaddata<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token"><</SPAN> int<SPAN class="punctuation token">(</SPAN>threshold<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> Raster<SPAN class="punctuation token">(</SPAN>last_precipgt50file<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">+</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN>
outPRECIPgt50Con<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> new_precipgt50_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>DefineProjection_management<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> new_precipgt50_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckInExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"PRECIPgt50 File "</SPAN><SPAN class="operator token">+</SPAN>new_precipgt50_name<SPAN class="operator token">+</SPAN><SPAN class="string token">" is created"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"next dekad data is not available. Exit..."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># to check if there is PRECIPgt50 data in output folder</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">create_PRECIPgt50_List</SPAN><SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"start reading existing PRECIPgt50 Dataset...."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"looking for file with naming chirps_precipgt50_YYYYMMD"</SPAN><SPAN class="punctuation token">)</SPAN>
PRECIPgt50_Date_List<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">for</SPAN> PRECIPgt50_Data <SPAN class="keyword token">in</SPAN> os<SPAN class="punctuation token">.</SPAN>listdir<SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> PRECIPgt50_Data<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">".tif"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">or</SPAN> PRECIPgt50_Data<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">".tiff"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"found "</SPAN> <SPAN class="operator token">+</SPAN> PRECIPgt50_Data <SPAN class="operator token">+</SPAN> <SPAN class="string token">" in the PRECIPgt50 folder"</SPAN><SPAN class="punctuation token">)</SPAN>
parse_String <SPAN class="operator token">=</SPAN> PRECIPgt50_Data<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'_'</SPAN><SPAN class="punctuation token">)</SPAN>
PRECIPgt50_Data_Date <SPAN class="operator token">=</SPAN> parse_String<SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN>
PRECIPgt50_Date_List<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>PRECIPgt50_Data_Date<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> PRECIPgt50_Date_List
<SPAN class="comment token"># to check input data</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">create_dekad_List</SPAN><SPAN class="punctuation token">(</SPAN>_tif_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"start reading list of dekad rainfall data...."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"looking for file with naming chirps-v2.0.YYYY.MM.DD"</SPAN><SPAN class="punctuation token">)</SPAN>
Dekad_Date_List<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">for</SPAN> Dekad_Data <SPAN class="keyword token">in</SPAN> os<SPAN class="punctuation token">.</SPAN>listdir<SPAN class="punctuation token">(</SPAN>_tif_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> Dekad_Data<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">".tif"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">or</SPAN> Dekad_Data<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">".tiff"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"found "</SPAN> <SPAN class="operator token">+</SPAN> Dekad_Data<SPAN class="operator token">+</SPAN> <SPAN class="string token">" in the dekad rainfall folder"</SPAN><SPAN class="punctuation token">)</SPAN>
parse_String <SPAN class="operator token">=</SPAN> Dekad_Data<SPAN class="punctuation token">.</SPAN>split<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'.'</SPAN><SPAN class="punctuation token">)</SPAN>
Dekad_Data_Date <SPAN class="operator token">=</SPAN> parse_String<SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">+</SPAN>parse_String<SPAN class="punctuation token">[</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">+</SPAN>parse_String<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN>
Dekad_Date_List<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>Dekad_Data_Date<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> Dekad_Date_List
<SPAN class="comment token"># to run the script</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">create_PRECIPgt50</SPAN><SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> _tiffolder<SPAN class="punctuation token">,</SPAN> threshold<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
PRECIPgt50_Date_List <SPAN class="operator token">=</SPAN> create_PRECIPgt50_List<SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">)</SPAN>
Dekad_list <SPAN class="operator token">=</SPAN> create_dekad_List<SPAN class="punctuation token">(</SPAN>_tiffolder<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># if there is no PRECIPgt50 data, creating new PRECIPgt50 data</SPAN>
<SPAN class="keyword token">if</SPAN> len<SPAN class="punctuation token">(</SPAN>PRECIPgt50_Date_List<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">==</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"No PRECIPgt50 Data found..."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"creating first PRECIPgt50 data..."</SPAN><SPAN class="punctuation token">)</SPAN>
execute_first_PRECIPgt50<SPAN class="punctuation token">(</SPAN>_tiffolder<SPAN class="punctuation token">,</SPAN> _PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> threshold<SPAN class="punctuation token">)</SPAN>
PRECIPgt50_Date_List <SPAN class="operator token">=</SPAN> create_PRECIPgt50_List<SPAN class="punctuation token">(</SPAN>_PRECIPgt50_folder<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># if there is PRECIPgt50 data</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"PRECIPgt50 Data found. Looking for latest PRECIPgt50 Data..."</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Check last PRECIPgt50 available</SPAN>
last_date <SPAN class="operator token">=</SPAN> max<SPAN class="punctuation token">(</SPAN>PRECIPgt50_Date_List<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Check last dekad data availabke</SPAN>
max_dekad_date <SPAN class="operator token">=</SPAN> max<SPAN class="punctuation token">(</SPAN>Dekad_list<SPAN class="punctuation token">)</SPAN>
last_PRECIPgt50_date <SPAN class="operator token">=</SPAN> date<SPAN class="punctuation token">(</SPAN>int<SPAN class="punctuation token">(</SPAN>last_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>last_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>last_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
last_dekad_date <SPAN class="operator token">=</SPAN> date<SPAN class="punctuation token">(</SPAN>int<SPAN class="punctuation token">(</SPAN>max_dekad_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>max_dekad_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> int<SPAN class="punctuation token">(</SPAN>max_dekad_date<SPAN class="punctuation token">[</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># process PRECIPgt50 to every dekad data available after last PRECIPgt50 data</SPAN>
<SPAN class="keyword token">while</SPAN> last_dekad_date <SPAN class="operator token">+</SPAN> timedelta<SPAN class="punctuation token">(</SPAN>days<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> last_PRECIPgt50_date<SPAN class="punctuation token">:</SPAN>
execute_PRECIPgt50<SPAN class="punctuation token">(</SPAN>last_date<SPAN class="punctuation token">,</SPAN> _tiffolder<SPAN class="punctuation token">,</SPAN> _PRECIPgt50_folder<SPAN class="punctuation token">,</SPAN> threshold<SPAN class="punctuation token">)</SPAN>
last_PRECIPgt50_date<SPAN class="operator token">=</SPAN>last_PRECIPgt50_date<SPAN class="operator token">+</SPAN>timedelta<SPAN class="punctuation token">(</SPAN>days<SPAN class="operator token">=</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN>
PRECIPgt50Year2 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>last_PRECIPgt50_date<SPAN class="punctuation token">.</SPAN>year<SPAN class="punctuation token">)</SPAN>
PRECIPgt50month2 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>last_PRECIPgt50_date<SPAN class="punctuation token">.</SPAN>month<SPAN class="punctuation token">)</SPAN>
PRECIPgt50day2 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>last_PRECIPgt50_date<SPAN class="punctuation token">.</SPAN>day<SPAN class="punctuation token">)</SPAN>
last_date<SPAN class="operator token">=</SPAN><SPAN class="string token">'{0}{1}{2}.tif'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>PRECIPgt50Year2<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> PRECIPgt50month2<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> PRECIPgt50day2<SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"All PRECIPgt50 data is available"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># run the function (output folder, input folder, threshold)</SPAN>
list <SPAN class="operator token">=</SPAN> create_PRECIPgt50<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Z:\\Temp\\DryWetSeason\\Output'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'Z:\\Temp\\DryWetSeason\\Dekad'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">50</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>