wolfhece 2.1.112__py3-none-any.whl → 2.1.113__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wolfhece/PyDraw.py +1 -1
 - wolfhece/apps/version.py +1 -1
 - wolfhece/irm_qdf.py +34 -7
 - wolfhece/mar/commontools.py +203 -196
 - wolfhece/wolf_array.py +53 -14
 - {wolfhece-2.1.112.dist-info → wolfhece-2.1.113.dist-info}/METADATA +1 -2
 - {wolfhece-2.1.112.dist-info → wolfhece-2.1.113.dist-info}/RECORD +10 -10
 - {wolfhece-2.1.112.dist-info → wolfhece-2.1.113.dist-info}/WHEEL +0 -0
 - {wolfhece-2.1.112.dist-info → wolfhece-2.1.113.dist-info}/entry_points.txt +0 -0
 - {wolfhece-2.1.112.dist-info → wolfhece-2.1.113.dist-info}/top_level.txt +0 -0
 
    
        wolfhece/mar/commontools.py
    CHANGED
    
    | 
         @@ -10,7 +10,6 @@ Created on Mon Dec  5 09:03:34 2022 
     | 
|
| 
       10 
10 
     | 
    
         
             
            import numpy as np
         
     | 
| 
       11 
11 
     | 
    
         
             
            import matplotlib.pyplot as plt
         
     | 
| 
       12 
12 
     | 
    
         
             
            import commontools as ct
         
     | 
| 
       13 
     | 
    
         
            -
            from mpl_toolkits.basemap import Basemap
         
     | 
| 
       14 
13 
     | 
    
         
             
            import xarray as xr
         
     | 
| 
       15 
14 
     | 
    
         
             
            import matplotlib as mpl
         
     | 
| 
       16 
15 
     | 
    
         
             
            import pandas as pd
         
     | 
| 
         @@ -47,7 +46,7 @@ def openfileh(fileloc,col): 
     | 
|
| 
       47 
46 
     | 
    
         
             
                        columns=lines.split()
         
     | 
| 
       48 
47 
     | 
    
         
             
                        V=np.append(V,float(columns[col]))
         
     | 
| 
       49 
48 
     | 
    
         
             
                    r=r+1
         
     | 
| 
       50 
     | 
    
         
            -
                return(V) 
     | 
| 
      
 49 
     | 
    
         
            +
                return(V)
         
     | 
| 
       51 
50 
     | 
    
         | 
| 
       52 
51 
     | 
    
         
             
            def isbis(year):
         
     | 
| 
       53 
52 
     | 
    
         
             
                if((year%4==0 and year%100!=0)or(year%4==0 and year%400==0 and year%100==0)):
         
     | 
| 
         @@ -63,27 +62,27 @@ def seasonalmeans(fileloc,col,start_year,end_year,mod,season): 
     | 
|
| 
       63 
62 
     | 
    
         
             
                # T=np.zeros(end_year-start_year+1)
         
     | 
| 
       64 
63 
     | 
    
         | 
| 
       65 
64 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                for y in range(start_year,end_year+1): 
     | 
| 
      
 65 
     | 
    
         
            +
                for y in range(start_year,end_year+1):
         
     | 
| 
       67 
66 
     | 
    
         
             
                    beg_summer=np.array([173,173,170]);end_summer=np.array([264,264,259])
         
     | 
| 
       68 
67 
     | 
    
         
             
                    beg_falls=end_summer+1;end_falls=np.array([355,355,359])
         
     | 
| 
       69 
68 
     | 
    
         
             
                    beg_winter=end_falls+1;end_winter=np.array([80,80,69])
         
     | 
| 
       70 
69 
     | 
    
         
             
                    beg_spring=end_winter+1;end_spring=beg_summer-1
         
     | 
| 
       71 
     | 
    
         
            -
                    end_year=np.array([365,365,360]) 
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
                    end_year=np.array([365,365,360])
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
       73 
72 
     | 
    
         
             
                    if(isbis(y)==1 and mod==0):
         
     | 
| 
       74 
73 
     | 
    
         
             
                        beg_summer=beg_summer+1;end_summer=end_summer+1
         
     | 
| 
       75 
74 
     | 
    
         
             
                        beg_falls=beg_falls+1;end_falls=end_falls+1
         
     | 
| 
       76 
75 
     | 
    
         
             
                        beg_winter=beg_winter+1;end_winter=end_winter+1
         
     | 
| 
       77 
76 
     | 
    
         
             
                        beg_spring=beg_spring+1;end_spring=beg_summer-1
         
     | 
| 
       78 
     | 
    
         
            -
                        end_year=end_year+1 
     | 
| 
       79 
     | 
    
         
            -
                    # ind=y-start_year 
     | 
| 
       80 
     | 
    
         
            -
                    if season=="Summer": 
     | 
| 
      
 77 
     | 
    
         
            +
                        end_year=end_year+1
         
     | 
| 
      
 78 
     | 
    
         
            +
                    # ind=y-start_year
         
     | 
| 
      
 79 
     | 
    
         
            +
                    if season=="Summer":
         
     | 
| 
       81 
80 
     | 
    
         
             
                        MASK=years==y
         
     | 
| 
       82 
81 
     | 
    
         
             
                        T=np.append(T,np.mean(var[MASK][beg_summer[mod]-1:end_summer[mod]-1]))
         
     | 
| 
       83 
82 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][beg_summer[mod]-1:end_summer[mod]-1])
         
     | 
| 
       84 
83 
     | 
    
         
             
                    elif season=="Falls":
         
     | 
| 
       85 
84 
     | 
    
         
             
                        MASK=years==y
         
     | 
| 
       86 
     | 
    
         
            -
                        T=np.append(T,np.mean(var[MASK][beg_falls[mod]-1:end_falls[mod]-1])) 
     | 
| 
      
 85 
     | 
    
         
            +
                        T=np.append(T,np.mean(var[MASK][beg_falls[mod]-1:end_falls[mod]-1]))
         
     | 
| 
       87 
86 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][beg_falls[mod]-1:end_falls[mod]-1])
         
     | 
| 
       88 
87 
     | 
    
         
             
                    elif season=="Winter":
         
     | 
| 
       89 
88 
     | 
    
         
             
                        MASK1=years==y;MASK2=years==y+1
         
     | 
| 
         @@ -97,7 +96,7 @@ def seasonalmeans(fileloc,col,start_year,end_year,mod,season): 
     | 
|
| 
       97 
96 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][beg_spring[mod]-1:end_spring[mod]-1])
         
     | 
| 
       98 
97 
     | 
    
         
             
                    elif season=="year":
         
     | 
| 
       99 
98 
     | 
    
         
             
                        MASK=years==y
         
     | 
| 
       100 
     | 
    
         
            -
                        T=np.append(T,np.mean(var[MASK][0:end_year[mod]-1])) 
     | 
| 
      
 99 
     | 
    
         
            +
                        T=np.append(T,np.mean(var[MASK][0:end_year[mod]-1]))
         
     | 
| 
       101 
100 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][0:end_year[mod]-1])
         
     | 
| 
       102 
101 
     | 
    
         
             
                return(T)
         
     | 
| 
       103 
102 
     | 
    
         | 
| 
         @@ -109,27 +108,27 @@ def seasonalsums(fileloc,col,start_year,end_year,mod,season): 
     | 
|
| 
       109 
108 
     | 
    
         
             
                # T=np.zeros(end_year-start_year+1)
         
     | 
| 
       110 
109 
     | 
    
         | 
| 
       111 
110 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
                for y in range(start_year,end_year+1): 
     | 
| 
      
 111 
     | 
    
         
            +
                for y in range(start_year,end_year+1):
         
     | 
| 
       113 
112 
     | 
    
         
             
                    beg_summer=np.array([173,173,170]);end_summer=np.array([264,264,259])
         
     | 
| 
       114 
113 
     | 
    
         
             
                    beg_falls=end_summer+1;end_falls=np.array([355,355,359])
         
     | 
| 
       115 
114 
     | 
    
         
             
                    beg_winter=end_falls+1;end_winter=np.array([80,80,69])
         
     | 
| 
       116 
115 
     | 
    
         
             
                    beg_spring=end_winter+1;end_spring=beg_summer-1
         
     | 
| 
       117 
     | 
    
         
            -
                    end_year=np.array([365,365,360]) 
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
      
 116 
     | 
    
         
            +
                    end_year=np.array([365,365,360])
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
       119 
118 
     | 
    
         
             
                    if(isbis(y)==1 and mod==0):
         
     | 
| 
       120 
119 
     | 
    
         
             
                        beg_summer=beg_summer+1;end_summer=end_summer+1
         
     | 
| 
       121 
120 
     | 
    
         
             
                        beg_falls=beg_falls+1;end_falls=end_falls+1
         
     | 
| 
       122 
121 
     | 
    
         
             
                        beg_winter=beg_winter+1;end_winter=end_winter+1
         
     | 
| 
       123 
122 
     | 
    
         
             
                        beg_spring=beg_spring+1;end_spring=beg_summer-1
         
     | 
| 
       124 
     | 
    
         
            -
                        end_year=end_year+1 
     | 
| 
       125 
     | 
    
         
            -
                    # ind=y-start_year 
     | 
| 
       126 
     | 
    
         
            -
                    if season=="Summer": 
     | 
| 
      
 123 
     | 
    
         
            +
                        end_year=end_year+1
         
     | 
| 
      
 124 
     | 
    
         
            +
                    # ind=y-start_year
         
     | 
| 
      
 125 
     | 
    
         
            +
                    if season=="Summer":
         
     | 
| 
       127 
126 
     | 
    
         
             
                        MASK=years==y
         
     | 
| 
       128 
127 
     | 
    
         
             
                        T=np.append(T,np.sum(var[MASK][beg_summer[mod]-1:end_summer[mod]-1]))
         
     | 
| 
       129 
128 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][beg_summer[mod]-1:end_summer[mod]-1])
         
     | 
| 
       130 
129 
     | 
    
         
             
                    elif season=="Falls":
         
     | 
| 
       131 
130 
     | 
    
         
             
                        MASK=years==y
         
     | 
| 
       132 
     | 
    
         
            -
                        T=np.append(T,np.sum(var[MASK][beg_falls[mod]-1:end_falls[mod]-1])) 
     | 
| 
      
 131 
     | 
    
         
            +
                        T=np.append(T,np.sum(var[MASK][beg_falls[mod]-1:end_falls[mod]-1]))
         
     | 
| 
       133 
132 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][beg_falls[mod]-1:end_falls[mod]-1])
         
     | 
| 
       134 
133 
     | 
    
         
             
                    elif season=="Winter":
         
     | 
| 
       135 
134 
     | 
    
         
             
                        MASK1=years==y;MASK2=years==y+1
         
     | 
| 
         @@ -143,18 +142,18 @@ def seasonalsums(fileloc,col,start_year,end_year,mod,season): 
     | 
|
| 
       143 
142 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][beg_spring[mod]-1:end_spring[mod]-1])
         
     | 
| 
       144 
143 
     | 
    
         
             
                    elif season=="year":
         
     | 
| 
       145 
144 
     | 
    
         
             
                        MASK=years==y
         
     | 
| 
       146 
     | 
    
         
            -
                        T=np.append(T,np.sum(var[MASK][0:end_year[mod]-1])) 
     | 
| 
      
 145 
     | 
    
         
            +
                        T=np.append(T,np.sum(var[MASK][0:end_year[mod]-1]))
         
     | 
| 
       147 
146 
     | 
    
         
             
                        # T[ind]=np.mean(var[MASK][0:end_year[mod]-1])
         
     | 
| 
       148 
147 
     | 
    
         
             
                return(T)
         
     | 
| 
       149 
148 
     | 
    
         | 
| 
       150 
149 
     | 
    
         
             
            def text_into_matrix(model_name,scenario,mx,my,sy,ey):
         
     | 
| 
       151 
150 
     | 
    
         
             
                """
         
     | 
| 
       152 
151 
     | 
    
         
             
                This function reads precipitation
         
     | 
| 
       153 
     | 
    
         
            -
                text files to put all of it in a 
     | 
| 
      
 152 
     | 
    
         
            +
                text files to put all of it in a
         
     | 
| 
       154 
153 
     | 
    
         
             
                3D matrix of yearly precipitation
         
     | 
| 
       155 
154 
     | 
    
         
             
                """
         
     | 
| 
       156 
155 
     | 
    
         
             
                directory='/srv7_tmp1/jbrajkovic/These/TS_ppp2/'
         
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
       158 
157 
     | 
    
         
             
                mat_ret=np.zeros([mx,my,1])
         
     | 
| 
       159 
158 
     | 
    
         
             
                if scenario=='ssp585':
         
     | 
| 
       160 
159 
     | 
    
         
             
                    y1=1980;y2=2100
         
     | 
| 
         @@ -168,21 +167,21 @@ def text_into_matrix(model_name,scenario,mx,my,sy,ey): 
     | 
|
| 
       168 
167 
     | 
    
         
             
                        isuiv+=1
         
     | 
| 
       169 
168 
     | 
    
         
             
                        # print('File doesn\'t exist',fn)
         
     | 
| 
       170 
169 
     | 
    
         
             
                        continue
         
     | 
| 
       171 
     | 
    
         
            -
                    else: 
     | 
| 
      
 170 
     | 
    
         
            +
                    else:
         
     | 
| 
       172 
171 
     | 
    
         
             
                        isuiv2+=1
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
       174 
173 
     | 
    
         
             
                        if isuiv<=my:
         
     | 
| 
       175 
174 
     | 
    
         
             
                                ii=0;jj=isuiv
         
     | 
| 
       176 
175 
     | 
    
         
             
                        else:
         
     | 
| 
       177 
176 
     | 
    
         
             
                                jj=int(isuiv%my)-1
         
     | 
| 
       178 
177 
     | 
    
         
             
                                ii=int((isuiv-jj)/my)
         
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
       180 
179 
     | 
    
         
             
                        if jj==0:j=my-1;ii=ii-1
         
     | 
| 
       181 
180 
     | 
    
         
             
                        else:jj=jj-1
         
     | 
| 
       182 
181 
     | 
    
         
             
                        if isuiv2==1:
         
     | 
| 
       183 
182 
     | 
    
         
             
                            with open (fn, 'r') as f:
         
     | 
| 
       184 
183 
     | 
    
         
             
                                yys = [float(row[0]) for row in csv.reader(f,delimiter='\t')]
         
     | 
| 
       185 
     | 
    
         
            -
                            with open (fn, 'r') as f: 
     | 
| 
      
 184 
     | 
    
         
            +
                            with open (fn, 'r') as f:
         
     | 
| 
       186 
185 
     | 
    
         
             
                                pr= [float(row[2]) for row in csv.reader(f,delimiter='\t')]
         
     | 
| 
       187 
186 
     | 
    
         
             
                        else:
         
     | 
| 
       188 
187 
     | 
    
         
             
                            with open (fn, 'r') as f:
         
     | 
| 
         @@ -197,11 +196,11 @@ def text_into_matrix(model_name,scenario,mx,my,sy,ey): 
     | 
|
| 
       197 
196 
     | 
    
         
             
                        if isuiv2%200==0:print(isuiv2, mat_ret[ii,jj,0])
         
     | 
| 
       198 
197 
     | 
    
         
             
                        isuiv+=1
         
     | 
| 
       199 
198 
     | 
    
         
             
                return(mat_ret)
         
     | 
| 
       200 
     | 
    
         
            -
             
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
       202 
     | 
    
         
            -
             
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
       205 
204 
     | 
    
         | 
| 
       206 
205 
     | 
    
         | 
| 
       207 
206 
     | 
    
         
             
            def slidingmeans(TS,interval,std_or_mean=1):
         
     | 
| 
         @@ -220,10 +219,10 @@ def slidingmeans(TS,interval,std_or_mean=1): 
     | 
|
| 
       220 
219 
     | 
    
         
             
                        else:newTS[i]=np.std(TS[i-int2:i+int2])
         
     | 
| 
       221 
220 
     | 
    
         
             
                return(newTS)
         
     | 
| 
       222 
221 
     | 
    
         | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
       224 
223 
     | 
    
         
             
            def RGPD(vec,shape,scale,pu,teta,th):
         
     | 
| 
       225 
224 
     | 
    
         
             
                # print(th)
         
     | 
| 
       226 
     | 
    
         
            -
                r=th+(scale/shape)*((vec*pu*teta)**shape-1) 
     | 
| 
      
 225 
     | 
    
         
            +
                r=th+(scale/shape)*((vec*pu*teta)**shape-1)
         
     | 
| 
       227 
226 
     | 
    
         
             
                return (r)
         
     | 
| 
       228 
227 
     | 
    
         | 
| 
       229 
228 
     | 
    
         
             
            def GPD_frequency(valu,shape,scale,pu,teta,th,events_per_year):
         
     | 
| 
         @@ -232,7 +231,7 @@ def GPD_frequency(valu,shape,scale,pu,teta,th,events_per_year): 
     | 
|
| 
       232 
231 
     | 
    
         
             
                return(ret_p)
         
     | 
| 
       233 
232 
     | 
    
         | 
| 
       234 
233 
     | 
    
         
             
            def RGPDI_values(vec,shape,scale,th):
         
     | 
| 
       235 
     | 
    
         
            -
             
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
       236 
235 
     | 
    
         
             
                vals=((((1-vec)**(-shape))-1)*scale)/shape+th
         
     | 
| 
       237 
236 
     | 
    
         
             
                return (vals)
         
     | 
| 
       238 
237 
     | 
    
         | 
| 
         @@ -240,7 +239,7 @@ def RGPD_values(vec,shape,scale): 
     | 
|
| 
       240 
239 
     | 
    
         
             
                vals=1-(1+shape*vec/scale)**(-1/shape)
         
     | 
| 
       241 
240 
     | 
    
         
             
                return (vals)
         
     | 
| 
       242 
241 
     | 
    
         | 
| 
       243 
     | 
    
         
            -
             
     | 
| 
      
 242 
     | 
    
         
            +
             
     | 
| 
       244 
243 
     | 
    
         
             
            def CIGPD(vec,shape,scale,pu,teta,th,varsc,varsh,cov):
         
     | 
| 
       245 
244 
     | 
    
         
             
                T1=(((vec*pu*teta)**shape-1)/shape)**2*varsc
         
     | 
| 
       246 
245 
     | 
    
         
             
                T2=((scale*(-(vec*teta*pu)**shape+shape*(vec*teta*pu)**shape*np.log(vec*teta*pu)+1)/shape**2))**2*varsh
         
     | 
| 
         @@ -248,7 +247,7 @@ def CIGPD(vec,shape,scale,pu,teta,th,varsc,varsh,cov): 
     | 
|
| 
       248 
247 
     | 
    
         
             
                    ((scale*(-(vec*teta*pu)**shape+shape*(vec*teta*pu)**shape*np.log(vec*teta*pu)+1)/shape**2))*cov
         
     | 
| 
       249 
248 
     | 
    
         
             
                CI=np.sqrt(T1+T2+T3)*1.645
         
     | 
| 
       250 
249 
     | 
    
         
             
                return(CI)
         
     | 
| 
       251 
     | 
    
         
            -
             
     | 
| 
      
 250 
     | 
    
         
            +
             
     | 
| 
       252 
251 
     | 
    
         | 
| 
       253 
252 
     | 
    
         | 
| 
       254 
253 
     | 
    
         
             
            def JJ2date(day,year):
         
     | 
| 
         @@ -261,7 +260,7 @@ def JJ2date(day,year): 
     | 
|
| 
       261 
260 
     | 
    
         | 
| 
       262 
261 
     | 
    
         
             
                for i in range(1,12):
         
     | 
| 
       263 
262 
     | 
    
         
             
                    end_monthcum[i]=end_monthcum[i-1]+end_month[i]
         
     | 
| 
       264 
     | 
    
         
            -
             
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
       265 
264 
     | 
    
         
             
                for i in range(0,12):
         
     | 
| 
       266 
265 
     | 
    
         
             
                    if i > 0:
         
     | 
| 
       267 
266 
     | 
    
         
             
                        if (day<=end_monthcum[i] and day>end_monthcum[i-1]):
         
     | 
| 
         @@ -271,20 +270,20 @@ def JJ2date(day,year): 
     | 
|
| 
       271 
270 
     | 
    
         
             
                        if (day<=end_monthcum[i] and day>0):
         
     | 
| 
       272 
271 
     | 
    
         
             
                            m=monthlab[i]
         
     | 
| 
       273 
272 
     | 
    
         
             
                            jj=day
         
     | 
| 
       274 
     | 
    
         
            -
                # jj+=1 
     | 
| 
      
 273 
     | 
    
         
            +
                # jj+=1
         
     | 
| 
       275 
274 
     | 
    
         
             
                date=np.array([jj,m,year]);date.astype(int)
         
     | 
| 
       276 
275 
     | 
    
         
             
                return(date)
         
     | 
| 
       277 
276 
     | 
    
         | 
| 
       278 
277 
     | 
    
         
             
            def date2JJ(day,month,year,fn1='__',type_mod=2):
         
     | 
| 
       279 
     | 
    
         
            -
                end_month=[31,28,31,30,31,30,31,31,30,31,30,31] 
     | 
| 
      
 278 
     | 
    
         
            +
                end_month=[31,28,31,30,31,30,31,31,30,31,30,31]
         
     | 
| 
       280 
279 
     | 
    
         
             
                end_monthcum=np.zeros(12);
         
     | 
| 
       281 
280 
     | 
    
         
             
                if type_mod==1:
         
     | 
| 
       282 
281 
     | 
    
         
             
                    if (ct.isbis(year)==1):end_month[1]=29
         
     | 
| 
       283 
     | 
    
         
            -
             
     | 
| 
      
 282 
     | 
    
         
            +
             
     | 
| 
       284 
283 
     | 
    
         | 
| 
       285 
284 
     | 
    
         
             
                for i in range(1,12):
         
     | 
| 
       286 
285 
     | 
    
         
             
                    end_monthcum[i]=end_monthcum[i-1]+end_month[i]
         
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
       288 
287 
     | 
    
         
             
                jj=int(end_monthcum[int(month-1)])+day
         
     | 
| 
       289 
288 
     | 
    
         
             
                # print(day,month,year,jj)
         
     | 
| 
       290 
289 
     | 
    
         
             
                return(jj)
         
     | 
| 
         @@ -299,6 +298,8 @@ def makebounds(mat,step): 
     | 
|
| 
       299 
298 
     | 
    
         
             
                return(bounds)
         
     | 
| 
       300 
299 
     | 
    
         | 
| 
       301 
300 
     | 
    
         
             
            def map_belgium(ax,lons,lats):
         
     | 
| 
      
 301 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
      
 302 
     | 
    
         
            +
             
     | 
| 
       302 
303 
     | 
    
         
             
                lat_0=50.6;lon_0=4.73
         
     | 
| 
       303 
304 
     | 
    
         
             
                m = Basemap(width=55000,height=50000,
         
     | 
| 
       304 
305 
     | 
    
         
             
                            rsphere=(649328.00,665262.0),\
         
     | 
| 
         @@ -309,6 +310,7 @@ def map_belgium(ax,lons,lats): 
     | 
|
| 
       309 
310 
     | 
    
         
             
                return(m)
         
     | 
| 
       310 
311 
     | 
    
         | 
| 
       311 
312 
     | 
    
         
             
            def map_belgium_J21(ax,lons,lats):
         
     | 
| 
      
 313 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
       312 
314 
     | 
    
         
             
                lat_0=50.15;lon_0=5.83
         
     | 
| 
       313 
315 
     | 
    
         
             
                m = Basemap(width=15000,height=18000,
         
     | 
| 
       314 
316 
     | 
    
         
             
                            rsphere=(649328.00,665262.0),\
         
     | 
| 
         @@ -320,6 +322,7 @@ def map_belgium_J21(ax,lons,lats): 
     | 
|
| 
       320 
322 
     | 
    
         | 
| 
       321 
323 
     | 
    
         | 
| 
       322 
324 
     | 
    
         
             
            def map_Vesdre(ax,lons,lats):
         
     | 
| 
      
 325 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
       323 
326 
     | 
    
         
             
                lat_0=50.55;lon_0=5.93
         
     | 
| 
       324 
327 
     | 
    
         
             
                m = Basemap(width=6000,height=3800,
         
     | 
| 
       325 
328 
     | 
    
         
             
                            rsphere=(649328.00,665262.0),\
         
     | 
| 
         @@ -328,14 +331,15 @@ def map_Vesdre(ax,lons,lats): 
     | 
|
| 
       328 
331 
     | 
    
         
             
                m.drawcountries()
         
     | 
| 
       329 
332 
     | 
    
         
             
                m.drawcoastlines()
         
     | 
| 
       330 
333 
     | 
    
         
             
                return(m)
         
     | 
| 
       331 
     | 
    
         
            -
                
         
     | 
| 
       332 
334 
     | 
    
         | 
| 
       333 
335 
     | 
    
         | 
| 
       334 
336 
     | 
    
         | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
      
 337 
     | 
    
         
            +
             
     | 
| 
      
 338 
     | 
    
         
            +
             
     | 
| 
       336 
339 
     | 
    
         
             
            def map_belgium_zoom(ax,lons,lats):
         
     | 
| 
      
 340 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
       337 
341 
     | 
    
         
             
                lat_0=50.6;lon_0=4.73
         
     | 
| 
       338 
     | 
    
         
            -
             
     | 
| 
      
 342 
     | 
    
         
            +
             
     | 
| 
       339 
343 
     | 
    
         
             
                m = Basemap(width=34000,height=30000,
         
     | 
| 
       340 
344 
     | 
    
         
             
                            rsphere=(649328.00,665262.0),\
         
     | 
| 
       341 
345 
     | 
    
         
             
                            area_thresh=1000.,projection='lcc',\
         
     | 
| 
         @@ -350,7 +354,8 @@ def map_belgium_zoom(ax,lons,lats): 
     | 
|
| 
       350 
354 
     | 
    
         
             
                return(m)
         
     | 
| 
       351 
355 
     | 
    
         | 
| 
       352 
356 
     | 
    
         
             
            def map_Europe(ax,lons,lats):
         
     | 
| 
       353 
     | 
    
         
            -
                
         
     | 
| 
      
 357 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
       354 
359 
     | 
    
         
             
                print(np.mean(lats))
         
     | 
| 
       355 
360 
     | 
    
         
             
                m = Basemap(width=6000,height=150000,
         
     | 
| 
       356 
361 
     | 
    
         
             
                            rsphere=(649328.00,665262.0),\
         
     | 
| 
         @@ -368,7 +373,7 @@ def mean_netcdf_alldomain(start_year,end_year,direct,var): 
     | 
|
| 
       368 
373 
     | 
    
         
             
                for y in range(start_year,end_year+1):
         
     | 
| 
       369 
374 
     | 
    
         
             
                    # print(y)
         
     | 
| 
       370 
375 
     | 
    
         
             
                    fn=glob.glob(direct+'*'+str(y)+'**nc*')[0]
         
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
      
 376 
     | 
    
         
            +
             
     | 
| 
       372 
377 
     | 
    
         
             
                    if y==start_year:
         
     | 
| 
       373 
378 
     | 
    
         
             
                        matrice=np.average(np.transpose((np.array(xr.open_dataset(fn)[var]))),axis=2)
         
     | 
| 
       374 
379 
     | 
    
         
             
                    else:
         
     | 
| 
         @@ -386,18 +391,19 @@ def mean_netcdf_alldomain(start_year,end_year,direct,var): 
     | 
|
| 
       386 
391 
     | 
    
         
             
                       #          for k in range(dimt):
         
     | 
| 
       387 
392 
     | 
    
         
             
                       #              mat2add[i,j,k]=np.mean(matrice[i,j,:,k])
         
     | 
| 
       388 
393 
     | 
    
         
             
                       # matdaily=np.append(matdaily,mat2add,axis=2)
         
     | 
| 
       389 
     | 
    
         
            -
             
     | 
| 
       390 
     | 
    
         
            -
             
     | 
| 
      
 394 
     | 
    
         
            +
             
     | 
| 
      
 395 
     | 
    
         
            +
             
     | 
| 
       391 
396 
     | 
    
         
             
                return(meant)
         
     | 
| 
       392 
397 
     | 
    
         | 
| 
       393 
398 
     | 
    
         
             
            def quick_map_plot(lons,lats,mat,bounds,cmap,MSK=np.zeros(0),nticks=4):
         
     | 
| 
      
 399 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
       394 
400 
     | 
    
         
             
                # filemask="/srv7_tmp1/jbrajkovic/These/EU-7.5km.nc"
         
     | 
| 
       395 
401 
     | 
    
         
             
                # ds_mask=xr.open_dataset(filemask)
         
     | 
| 
       396 
402 
     | 
    
         
             
                # mask=np.transpose(np.array(ds_mask.MASK[:,:]))
         
     | 
| 
       397 
403 
     | 
    
         
             
                # MSK=mask==1
         
     | 
| 
       398 
404 
     | 
    
         
             
                if MSK.shape[0]==0:
         
     | 
| 
       399 
405 
     | 
    
         
             
                    MSK=np.zeros_like(mat)==0
         
     | 
| 
       400 
     | 
    
         
            -
             
     | 
| 
      
 406 
     | 
    
         
            +
             
     | 
| 
       401 
407 
     | 
    
         
             
                lon_center=4.96
         
     | 
| 
       402 
408 
     | 
    
         
             
                # lon_center=np.mean(lats)
         
     | 
| 
       403 
409 
     | 
    
         
             
                lat_center=50.56
         
     | 
| 
         @@ -414,13 +420,13 @@ def quick_map_plot(lons,lats,mat,bounds,cmap,MSK=np.zeros(0),nticks=4): 
     | 
|
| 
       414 
420 
     | 
    
         
             
                step=vmax/10.
         
     | 
| 
       415 
421 
     | 
    
         
             
                # bounds = bounds=np.arange(0,105,5)
         
     | 
| 
       416 
422 
     | 
    
         
             
                # cmap=cm.jet
         
     | 
| 
       417 
     | 
    
         
            -
                norm = mpl.colors.BoundaryNorm(bounds, cmap.N) 
     | 
| 
      
 423 
     | 
    
         
            +
                norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
         
     | 
| 
       418 
424 
     | 
    
         
             
                x,y=m(lons,lats)
         
     | 
| 
       419 
425 
     | 
    
         
             
                # print(x,y)
         
     | 
| 
       420 
426 
     | 
    
         
             
                mapa=m.pcolormesh(x,y,mat,norm=norm,cmap=cmap)
         
     | 
| 
       421 
427 
     | 
    
         
             
                # mapa=m.contourf(x,y,mat,norm=norm,cmap=cmap)
         
     | 
| 
       422 
     | 
    
         
            -
                # m.contour(x,y,MSK,levels=0,linewidth=3.0) 
     | 
| 
       423 
     | 
    
         
            -
             
     | 
| 
      
 428 
     | 
    
         
            +
                # m.contour(x,y,MSK,levels=0,linewidth=3.0)
         
     | 
| 
      
 429 
     | 
    
         
            +
             
     | 
| 
       424 
430 
     | 
    
         
             
                # ds_mask=xr.open_dataset(filemask)
         
     | 
| 
       425 
431 
     | 
    
         
             
                # mask=np.transpose(np.array(ds_mask.MASK[:,:]))
         
     | 
| 
       426 
432 
     | 
    
         
             
                # MSK=mask==1
         
     | 
| 
         @@ -433,7 +439,7 @@ def quick_map_plot(lons,lats,mat,bounds,cmap,MSK=np.zeros(0),nticks=4): 
     | 
|
| 
       433 
439 
     | 
    
         
             
                #                             color='black',
         
     | 
| 
       434 
440 
     | 
    
         
             
                #                             arrowprops=dict(arrowstyle='Simple', color='black'),
         
     | 
| 
       435 
441 
     | 
    
         
             
                #                             fontsize=24,weight='bold')
         
     | 
| 
       436 
     | 
    
         
            -
                # plt.annotate(text1, xy=(0.9, 0.1), xycoords='axes fraction', 
     | 
| 
      
 442 
     | 
    
         
            +
                # plt.annotate(text1, xy=(0.9, 0.1), xycoords='axes fraction',
         
     | 
| 
       437 
443 
     | 
    
         
             
                #                             color='black',
         
     | 
| 
       438 
444 
     | 
    
         
             
                #                             fontsize=24,weight='bold')
         
     | 
| 
       439 
445 
     | 
    
         
             
                # m.contourf(x,y,mat,norm=norm,cmap=cmap)
         
     | 
| 
         @@ -452,7 +458,7 @@ def quick_map_plot(lons,lats,mat,bounds,cmap,MSK=np.zeros(0),nticks=4): 
     | 
|
| 
       452 
458 
     | 
    
         
             
                #                         ha=ps1[i],va=pos[i],color='k')
         
     | 
| 
       453 
459 
     | 
    
         
             
                #     else:
         
     | 
| 
       454 
460 
     | 
    
         
             
                #         plt.text(xv[i], yv[i]-decalage[i], cities[i],fontsize=10,
         
     | 
| 
       455 
     | 
    
         
            -
                #                         ha=ps1[i],va=pos[i],color='k',weight='bold') 
     | 
| 
      
 461 
     | 
    
         
            +
                #                         ha=ps1[i],va=pos[i],color='k',weight='bold')
         
     | 
| 
       456 
462 
     | 
    
         
             
                #     if i<=4:plt.scatter(xv[i], yv[i],marker='+',color='black',s=8)
         
     | 
| 
       457 
463 
     | 
    
         
             
                # for item in [fig, ax]:
         
     | 
| 
       458 
464 
     | 
    
         
             
                #     item.patch.set_visible(False)
         
     | 
| 
         @@ -463,8 +469,9 @@ def quick_map_plot(lons,lats,mat,bounds,cmap,MSK=np.zeros(0),nticks=4): 
     | 
|
| 
       463 
469 
     | 
    
         
             
                cbar.ax.tick_params(labelsize=10)
         
     | 
| 
       464 
470 
     | 
    
         
             
                # cbar.set_label('Height (m)',fontsize=14,labelpad=10)
         
     | 
| 
       465 
471 
     | 
    
         
             
                # cbar.solids.set_edgecolor("face")
         
     | 
| 
       466 
     | 
    
         
            -
             
     | 
| 
      
 472 
     | 
    
         
            +
             
     | 
| 
       467 
473 
     | 
    
         
             
            def quick_map_plot2(lons,lats,mat,bounds,cmap,ax):
         
     | 
| 
      
 474 
     | 
    
         
            +
                from mpl_toolkits.basemap import Basemap
         
     | 
| 
       468 
475 
     | 
    
         
             
                lat_0=50.6;lon_0=4.73
         
     | 
| 
       469 
476 
     | 
    
         
             
                lon_center=lon_0
         
     | 
| 
       470 
477 
     | 
    
         
             
                # lon_center=np.mean(lats)
         
     | 
| 
         @@ -481,11 +488,11 @@ def quick_map_plot2(lons,lats,mat,bounds,cmap,ax): 
     | 
|
| 
       481 
488 
     | 
    
         
             
                step=vmax/10.
         
     | 
| 
       482 
489 
     | 
    
         
             
                # bounds = bounds=np.arange(0,105,5)
         
     | 
| 
       483 
490 
     | 
    
         
             
                # cmap=cm.jet
         
     | 
| 
       484 
     | 
    
         
            -
                norm = mpl.colors.BoundaryNorm(bounds, cmap.N) 
     | 
| 
      
 491 
     | 
    
         
            +
                norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
         
     | 
| 
       485 
492 
     | 
    
         
             
                x,y=m(lons,lats)
         
     | 
| 
       486 
493 
     | 
    
         
             
                mapa=m.pcolormesh(x,y,mat,norm=norm,cmap=cmap    )
         
     | 
| 
       487 
494 
     | 
    
         
             
                return(mapa)
         
     | 
| 
       488 
     | 
    
         
            -
             
     | 
| 
      
 495 
     | 
    
         
            +
             
     | 
| 
       489 
496 
     | 
    
         
             
            # def get_coordinates(path_to_file):
         
     | 
| 
       490 
497 
     | 
    
         | 
| 
       491 
498 
     | 
    
         
             
            #     with fiona.open(path_to_file) as shapefile:
         
     | 
| 
         @@ -495,62 +502,62 @@ def quick_map_plot2(lons,lats,mat,bounds,cmap,ax): 
     | 
|
| 
       495 
502 
     | 
    
         
             
            #             print(record)
         
     | 
| 
       496 
503 
     | 
    
         
             
            #     # Read the shapefile
         
     | 
| 
       497 
504 
     | 
    
         
             
            #     gdf = gpd.read_file(path_to_file)
         
     | 
| 
       498 
     | 
    
         
            -
             
     | 
| 
      
 505 
     | 
    
         
            +
             
     | 
| 
       499 
506 
     | 
    
         
             
            #     # Print the first few rows of the GeoDataFrame
         
     | 
| 
       500 
507 
     | 
    
         
             
            #     print(gdf.head())
         
     | 
| 
       501 
     | 
    
         
            -
             
     | 
| 
      
 508 
     | 
    
         
            +
             
     | 
| 
       502 
509 
     | 
    
         
             
            def mask_belgium(lon,lat,path_in,path_out,center_or_all=2):
         
     | 
| 
       503 
     | 
    
         
            -
             
     | 
| 
       504 
     | 
    
         
            -
                """This routine takes as arguments: 
     | 
| 
      
 510 
     | 
    
         
            +
             
     | 
| 
      
 511 
     | 
    
         
            +
                """This routine takes as arguments:
         
     | 
| 
       505 
512 
     | 
    
         
             
                    -The longitudes and latitudes of the netcdf (gridded)
         
     | 
| 
       506 
513 
     | 
    
         
             
                    -a .tif file of the mask we want to create (tif must be in epsg:31370 lambbert 72)
         
     | 
| 
       507 
514 
     | 
    
         
             
                   and creates a mask at the resolution of the input netcdf which is saved as netcdf in path_out
         
     | 
| 
       508 
     | 
    
         
            -
             
     | 
| 
       509 
     | 
    
         
            -
                   L'option center_or_all precise si l'on souhaite qu'un des 4 coins des pixels chosisis soient à l'intérieur 
     | 
| 
      
 515 
     | 
    
         
            +
             
     | 
| 
      
 516 
     | 
    
         
            +
                   L'option center_or_all precise si l'on souhaite qu'un des 4 coins des pixels chosisis soient à l'intérieur
         
     | 
| 
       510 
517 
     | 
    
         
             
                   de la zone ou si on regarde uniquement le centre.
         
     | 
| 
       511 
518 
     | 
    
         
             
                   Si center_or_all vaut 1, on ragarde uniquement le centre et donc le masque sera plus petit
         
     | 
| 
       512 
     | 
    
         
            -
             
     | 
| 
      
 519 
     | 
    
         
            +
             
     | 
| 
       513 
520 
     | 
    
         
             
                   conseil : raster d'une résolution 100 mètres en input'
         
     | 
| 
       514 
521 
     | 
    
         
             
                """
         
     | 
| 
       515 
     | 
    
         
            -
             
     | 
| 
      
 522 
     | 
    
         
            +
             
     | 
| 
       516 
523 
     | 
    
         
             
                "Projecting lon lat to Lambert"
         
     | 
| 
       517 
524 
     | 
    
         
             
                discheck=300000
         
     | 
| 
       518 
525 
     | 
    
         
             
                lb=pyproj.Proj(projparams='epsg:31370')
         
     | 
| 
       519 
526 
     | 
    
         
             
                xlb,ylb=lb(lon,lat)
         
     | 
| 
       520 
527 
     | 
    
         
             
                if center_or_all!=0:
         
     | 
| 
       521 
528 
     | 
    
         
             
                    xlb_ur=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
       522 
     | 
    
         
            -
                    ylb_ur=np.zeros([xlb.shape[0],xlb.shape[1]]) 
     | 
| 
       523 
     | 
    
         
            -
             
     | 
| 
      
 529 
     | 
    
         
            +
                    ylb_ur=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
      
 530 
     | 
    
         
            +
             
     | 
| 
       524 
531 
     | 
    
         
             
                    xlb_ul=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
       525 
532 
     | 
    
         
             
                    ylb_ul=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
       526 
     | 
    
         
            -
             
     | 
| 
       527 
     | 
    
         
            -
             
     | 
| 
      
 533 
     | 
    
         
            +
             
     | 
| 
      
 534 
     | 
    
         
            +
             
     | 
| 
       528 
535 
     | 
    
         
             
                    xlb_bl=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
       529 
536 
     | 
    
         
             
                    ylb_bl=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
       530 
     | 
    
         
            -
             
     | 
| 
       531 
     | 
    
         
            -
                    xlb_br=np.zeros([xlb.shape[0],xlb.shape[1]]) 
     | 
| 
       532 
     | 
    
         
            -
                    ylb_br=np.zeros([xlb.shape[0],xlb.shape[1]]) 
     | 
| 
       533 
     | 
    
         
            -
             
     | 
| 
      
 537 
     | 
    
         
            +
             
     | 
| 
      
 538 
     | 
    
         
            +
                    xlb_br=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
      
 539 
     | 
    
         
            +
                    ylb_br=np.zeros([xlb.shape[0],xlb.shape[1]])
         
     | 
| 
      
 540 
     | 
    
         
            +
             
     | 
| 
       534 
541 
     | 
    
         
             
                    "Calcul des sommets des pixels"
         
     | 
| 
       535 
     | 
    
         
            -
             
     | 
| 
      
 542 
     | 
    
         
            +
             
     | 
| 
       536 
543 
     | 
    
         
             
                    for i in range(1,xlb.shape[0]-1):
         
     | 
| 
       537 
544 
     | 
    
         
             
                        for j in range(1,xlb.shape[1]-1):
         
     | 
| 
       538 
545 
     | 
    
         
             
                            xlb_ur[i,j]=np.mean(lon[i-1:i+1,j:j+2]);ylb_ur[i,j]=np.mean(lat[i-1:i+1,j:j+2])
         
     | 
| 
       539 
546 
     | 
    
         
             
                            xlb_ul[i,j]=np.mean(lon[i-1:i+1,j-1:j+1]);ylb_ul[i,j]=np.mean(lat[i-1:i,j-1:j+1])
         
     | 
| 
       540 
547 
     | 
    
         
             
                            xlb_bl[i,j]=np.mean(lon[i:i+2,j-1:j+1]);ylb_bl[i,j]=np.mean(lat[i:i+2,j-1:j+1])
         
     | 
| 
       541 
548 
     | 
    
         
             
                            xlb_br[i,j]=np.mean(lon[i:i+2,j:j+2]);ylb_br[i,j]=np.mean(lat[i:i+2,j:j+2])
         
     | 
| 
       542 
     | 
    
         
            -
             
     | 
| 
      
 549 
     | 
    
         
            +
             
     | 
| 
       543 
550 
     | 
    
         
             
                    xlb_ur,ylb_ur=lb(xlb_ur,ylb_ur)
         
     | 
| 
       544 
551 
     | 
    
         
             
                    xlb_ul,ylb_ul=lb(xlb_ul,ylb_ul)
         
     | 
| 
       545 
552 
     | 
    
         
             
                    xlb_bl,ylb_bl=lb(xlb_bl,ylb_bl)
         
     | 
| 
       546 
553 
     | 
    
         
             
                    xlb_br,ylb_br=lb(xlb_br,ylb_br)
         
     | 
| 
       547 
     | 
    
         
            -
             
     | 
| 
       548 
     | 
    
         
            -
             
     | 
| 
       549 
     | 
    
         
            -
             
     | 
| 
       550 
     | 
    
         
            -
             
     | 
| 
      
 554 
     | 
    
         
            +
             
     | 
| 
      
 555 
     | 
    
         
            +
             
     | 
| 
      
 556 
     | 
    
         
            +
             
     | 
| 
      
 557 
     | 
    
         
            +
             
     | 
| 
       551 
558 
     | 
    
         
             
                # print (ylb_ur[1:]-ylb[1:])
         
     | 
| 
       552 
559 
     | 
    
         
             
                "Opening the raster file"
         
     | 
| 
       553 
     | 
    
         
            -
             
     | 
| 
      
 560 
     | 
    
         
            +
             
     | 
| 
       554 
561 
     | 
    
         
             
                im = Image.open(path_in)
         
     | 
| 
       555 
562 
     | 
    
         
             
                imarray = np.array(im)
         
     | 
| 
       556 
563 
     | 
    
         | 
| 
         @@ -570,11 +577,11 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       570 
577 
     | 
    
         
             
                lons=lons[imarray!=0]
         
     | 
| 
       571 
578 
     | 
    
         
             
                print(lats)
         
     | 
| 
       572 
579 
     | 
    
         
             
                MSK=np.zeros(xlb.shape)
         
     | 
| 
       573 
     | 
    
         
            -
             
     | 
| 
      
 580 
     | 
    
         
            +
             
     | 
| 
       574 
581 
     | 
    
         
             
                print(np.max(xs),np.max(ys))
         
     | 
| 
       575 
     | 
    
         
            -
             
     | 
| 
      
 582 
     | 
    
         
            +
             
     | 
| 
       576 
583 
     | 
    
         
             
                "Finding the pixels which are in the zone"
         
     | 
| 
       577 
     | 
    
         
            -
             
     | 
| 
      
 584 
     | 
    
         
            +
             
     | 
| 
       578 
585 
     | 
    
         
             
                "perimetre de recherche"
         
     | 
| 
       579 
586 
     | 
    
         
             
                maxi_lat=np.max(lats)
         
     | 
| 
       580 
587 
     | 
    
         
             
                mini_lat=np.min(lats)
         
     | 
| 
         @@ -592,7 +599,7 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       592 
599 
     | 
    
         
             
                        if abs(ylb[i,j]-maxi_lat)<disu and ylb[i,j]-maxi_lat>=0 :
         
     | 
| 
       593 
600 
     | 
    
         
             
                            iu=i
         
     | 
| 
       594 
601 
     | 
    
         
             
                            disu=abs(ylb[i,j]-maxi_lat)
         
     | 
| 
       595 
     | 
    
         
            -
             
     | 
| 
      
 602 
     | 
    
         
            +
             
     | 
| 
       596 
603 
     | 
    
         
             
                        if abs( ylb[i,j]-mini_lat)<disb and ylb[i,j]-mini_lat<=0:
         
     | 
| 
       597 
604 
     | 
    
         
             
                            ib=i
         
     | 
| 
       598 
605 
     | 
    
         
             
                            disb=abs( ylb[i,j]-mini_lat)
         
     | 
| 
         @@ -604,8 +611,8 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       604 
611 
     | 
    
         
             
                        if abs(xlb[i,j]-maxi_lon)<disr and xlb[i,j]-maxi_lon >=0 :
         
     | 
| 
       605 
612 
     | 
    
         
             
                            jr=j
         
     | 
| 
       606 
613 
     | 
    
         
             
                            disr=abs(xlb[i,j]-maxi_lon)
         
     | 
| 
       607 
     | 
    
         
            -
             
     | 
| 
       608 
     | 
    
         
            -
                print(disu,disr,disb,disl) 
     | 
| 
      
 614 
     | 
    
         
            +
             
     | 
| 
      
 615 
     | 
    
         
            +
                print(disu,disr,disb,disl)
         
     | 
| 
       609 
616 
     | 
    
         
             
                print(iu,ib,jl,jr)
         
     | 
| 
       610 
617 
     | 
    
         
             
                # if iu==ib or jl==jr:
         
     | 
| 
       611 
618 
     | 
    
         
             
                # iu=1;ib=xlb.shape[0]-1
         
     | 
| 
         @@ -626,7 +633,7 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       626 
633 
     | 
    
         | 
| 
       627 
634 
     | 
    
         
             
                            else:
         
     | 
| 
       628 
635 
     | 
    
         
             
                                msk_stp=lons[((abs(lons-xlb[i,j])<discheck)&(abs(lats-ylb[i,j])<discheck))]
         
     | 
| 
       629 
     | 
    
         
            -
             
     | 
| 
      
 636 
     | 
    
         
            +
             
     | 
| 
       630 
637 
     | 
    
         
             
                            # print(i,j)
         
     | 
| 
       631 
638 
     | 
    
         
             
                            # if i%10==0 and j==jl:
         
     | 
| 
       632 
639 
     | 
    
         
             
                            # print(i,j)
         
     | 
| 
         @@ -639,7 +646,7 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       639 
646 
     | 
    
         | 
| 
       640 
647 
     | 
    
         
             
                # MSK
         
     | 
| 
       641 
648 
     | 
    
         
             
                # time=[1]
         
     | 
| 
       642 
     | 
    
         
            -
             
     | 
| 
      
 649 
     | 
    
         
            +
             
     | 
| 
       643 
650 
     | 
    
         
             
                "writing the output netcdf with the mask"
         
     | 
| 
       644 
651 
     | 
    
         | 
| 
       645 
652 
     | 
    
         
             
                coords=dict(
         
     | 
| 
         @@ -650,7 +657,7 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       650 
657 
     | 
    
         
             
                    data=np.transpose(np.zeros([xlb.shape[0],xlb.shape[1]])),
         
     | 
| 
       651 
658 
     | 
    
         
             
                    dims=["y","x"],
         
     | 
| 
       652 
659 
     | 
    
         
             
                    coords=coords,
         
     | 
| 
       653 
     | 
    
         
            -
                    ) 
     | 
| 
      
 660 
     | 
    
         
            +
                    )
         
     | 
| 
       654 
661 
     | 
    
         
             
                Mar_rain=xr.DataArray(
         
     | 
| 
       655 
662 
     | 
    
         
             
                    data=np.transpose(MSK),
         
     | 
| 
       656 
663 
     | 
    
         
             
                    dims=["y","x"],
         
     | 
| 
         @@ -665,54 +672,54 @@ def mask_belgium(lon,lat,path_in,path_out,center_or_all=2): 
     | 
|
| 
       665 
672 
     | 
    
         
             
                MSK=[MSK==1]
         
     | 
| 
       666 
673 
     | 
    
         
             
                return (ylb)
         
     | 
| 
       667 
674 
     | 
    
         
             
                    # return(coords)
         
     | 
| 
       668 
     | 
    
         
            -
             
     | 
| 
      
 675 
     | 
    
         
            +
             
     | 
| 
       669 
676 
     | 
    
         
             
            def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buffer=2):
         
     | 
| 
       670 
     | 
    
         
            -
                """This routine takes as arguments: 
     | 
| 
      
 677 
     | 
    
         
            +
                """This routine takes as arguments:
         
     | 
| 
       671 
678 
     | 
    
         
             
                    -The longitudes and latitudes of the netcdf (gridded)
         
     | 
| 
       672 
679 
     | 
    
         
             
                    -a .tif file of the mask we want to create (tif must be in epsg:31370 lambbert 72)
         
     | 
| 
       673 
680 
     | 
    
         
             
                   and creates a mask at the resolution of the input netcdf which is saved as netcdf in path_out
         
     | 
| 
       674 
     | 
    
         
            -
             
     | 
| 
       675 
     | 
    
         
            -
                   L'option center_or_all precise si l'on souhaite qu'un des 4 coins des pixels chosisis soient à l'intérieur 
     | 
| 
      
 681 
     | 
    
         
            +
             
     | 
| 
      
 682 
     | 
    
         
            +
                   L'option center_or_all precise si l'on souhaite qu'un des 4 coins des pixels chosisis soient à l'intérieur
         
     | 
| 
       676 
683 
     | 
    
         
             
                   de la zone ou si on regarde uniquement le centre.
         
     | 
| 
       677 
684 
     | 
    
         
             
                   Si center_or_all vaut 1, on ragarde uniquement le centre et donc le masque sera plus petit
         
     | 
| 
       678 
     | 
    
         
            -
             
     | 
| 
      
 685 
     | 
    
         
            +
             
     | 
| 
       679 
686 
     | 
    
         
             
                   conseil : raster d'une résolution 100 mètres en input'
         
     | 
| 
       680 
687 
     | 
    
         
             
                """
         
     | 
| 
       681 
     | 
    
         
            -
             
     | 
| 
      
 688 
     | 
    
         
            +
             
     | 
| 
       682 
689 
     | 
    
         
             
                "Projecting lon lat to Lambert"
         
     | 
| 
       683 
690 
     | 
    
         
             
                # discheck=300000
         
     | 
| 
       684 
691 
     | 
    
         
             
                print('Check distance = '+str(discheck) + 'meters')
         
     | 
| 
       685 
692 
     | 
    
         
             
                lb=pyproj.Proj(projparams='epsg:31370')
         
     | 
| 
       686 
     | 
    
         
            -
             
     | 
| 
      
 693 
     | 
    
         
            +
             
     | 
| 
       687 
694 
     | 
    
         
             
                if center_or_all!=0:
         
     | 
| 
       688 
695 
     | 
    
         
             
                    xlb_ur=np.zeros_like(lon)
         
     | 
| 
       689 
696 
     | 
    
         
             
                    ylb_ur=np.zeros_like(lon)
         
     | 
| 
       690 
     | 
    
         
            -
             
     | 
| 
      
 697 
     | 
    
         
            +
             
     | 
| 
       691 
698 
     | 
    
         
             
                    xlb_ul=np.zeros_like(lon)
         
     | 
| 
       692 
699 
     | 
    
         
             
                    ylb_ul=np.zeros_like(lon)
         
     | 
| 
       693 
     | 
    
         
            -
             
     | 
| 
       694 
     | 
    
         
            -
             
     | 
| 
      
 700 
     | 
    
         
            +
             
     | 
| 
      
 701 
     | 
    
         
            +
             
     | 
| 
       695 
702 
     | 
    
         
             
                    xlb_bl=np.zeros_like(lon)
         
     | 
| 
       696 
703 
     | 
    
         
             
                    ylb_bl=np.zeros_like(lon)
         
     | 
| 
       697 
     | 
    
         
            -
             
     | 
| 
      
 704 
     | 
    
         
            +
             
     | 
| 
       698 
705 
     | 
    
         
             
                    xlb_br=np.zeros_like(lon)
         
     | 
| 
       699 
706 
     | 
    
         
             
                    ylb_br=np.zeros_like(lon)
         
     | 
| 
       700 
     | 
    
         
            -
             
     | 
| 
      
 707 
     | 
    
         
            +
             
     | 
| 
       701 
708 
     | 
    
         
             
                    "Calcul des sommets des pixels"
         
     | 
| 
       702 
     | 
    
         
            -
             
     | 
| 
      
 709 
     | 
    
         
            +
             
     | 
| 
       703 
710 
     | 
    
         
             
                    for i in range(1,lon.shape[0]-1):
         
     | 
| 
       704 
711 
     | 
    
         
             
                        for j in range(1,lon.shape[1]-1):
         
     | 
| 
       705 
712 
     | 
    
         
             
                            xlb_ur[i,j]=np.mean(lon[i-1:i+1,j:j+2]);ylb_ur[i,j]=np.mean(lat[i-1:i+1,j:j+2])
         
     | 
| 
       706 
713 
     | 
    
         
             
                            xlb_ul[i,j]=np.mean(lon[i-1:i+1,j-1:j+1]);ylb_ul[i,j]=np.mean(lat[i-1:i,j-1:j+1])
         
     | 
| 
       707 
714 
     | 
    
         
             
                            xlb_bl[i,j]=np.mean(lon[i:i+2,j-1:j+1]);ylb_bl[i,j]=np.mean(lat[i:i+2,j-1:j+1])
         
     | 
| 
       708 
715 
     | 
    
         
             
                            xlb_br[i,j]=np.mean(lon[i:i+2,j:j+2]);ylb_br[i,j]=np.mean(lat[i:i+2,j:j+2])
         
     | 
| 
       709 
     | 
    
         
            -
             
     | 
| 
       710 
     | 
    
         
            -
             
     | 
| 
       711 
     | 
    
         
            -
             
     | 
| 
      
 716 
     | 
    
         
            +
             
     | 
| 
      
 717 
     | 
    
         
            +
             
     | 
| 
      
 718 
     | 
    
         
            +
             
     | 
| 
       712 
719 
     | 
    
         | 
| 
       713 
720 
     | 
    
         
             
                # print (ylb_ur[1:]-ylb[1:])
         
     | 
| 
       714 
721 
     | 
    
         
             
                "Opening the raster file"
         
     | 
| 
       715 
     | 
    
         
            -
             
     | 
| 
      
 722 
     | 
    
         
            +
             
     | 
| 
       716 
723 
     | 
    
         
             
                im = Image.open(path_in)
         
     | 
| 
       717 
724 
     | 
    
         
             
                imarray = np.array(im)
         
     | 
| 
       718 
725 
     | 
    
         | 
| 
         @@ -727,25 +734,25 @@ def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buff 
     | 
|
| 
       727 
734 
     | 
    
         
             
                     lons= np.array(xs)
         
     | 
| 
       728 
735 
     | 
    
         
             
                     lats = np.array(ys)
         
     | 
| 
       729 
736 
     | 
    
         
             
                     print('lons shape', lons.shape)
         
     | 
| 
       730 
     | 
    
         
            -
             
     | 
| 
      
 737 
     | 
    
         
            +
             
     | 
| 
       731 
738 
     | 
    
         
             
                inProj=Proj(init='epsg:31370')
         
     | 
| 
       732 
739 
     | 
    
         
             
                outProj = Proj(init='epsg:4326')
         
     | 
| 
       733 
740 
     | 
    
         | 
| 
       734 
     | 
    
         
            -
                lons,lats=transform(inProj,outProj,lons,lats) 
     | 
| 
       735 
     | 
    
         
            -
             
     | 
| 
      
 741 
     | 
    
         
            +
                lons,lats=transform(inProj,outProj,lons,lats)
         
     | 
| 
      
 742 
     | 
    
         
            +
             
     | 
| 
       736 
743 
     | 
    
         
             
                # print(ys,ylb)
         
     | 
| 
       737 
744 
     | 
    
         
             
                # plt.imshow(imarray);plt.colorbar()
         
     | 
| 
       738 
745 
     | 
    
         
             
                # plt.show()
         
     | 
| 
       739 
746 
     | 
    
         
             
                lats=lats[imarray>0]
         
     | 
| 
       740 
747 
     | 
    
         
             
                lons=lons[imarray>0]
         
     | 
| 
       741 
     | 
    
         
            -
             
     | 
| 
      
 748 
     | 
    
         
            +
             
     | 
| 
       742 
749 
     | 
    
         
             
                print(lats)
         
     | 
| 
       743 
750 
     | 
    
         
             
                MSK=np.zeros(lon.shape)
         
     | 
| 
       744 
     | 
    
         
            -
             
     | 
| 
      
 751 
     | 
    
         
            +
             
     | 
| 
       745 
752 
     | 
    
         
             
                print(np.max(xs),np.max(ys))
         
     | 
| 
       746 
     | 
    
         
            -
             
     | 
| 
      
 753 
     | 
    
         
            +
             
     | 
| 
       747 
754 
     | 
    
         
             
                "Finding the pixels which are in the zone"
         
     | 
| 
       748 
     | 
    
         
            -
             
     | 
| 
      
 755 
     | 
    
         
            +
             
     | 
| 
       749 
756 
     | 
    
         
             
                "perimetre de recherche"
         
     | 
| 
       750 
757 
     | 
    
         
             
                maxi_lat=np.max(lats)
         
     | 
| 
       751 
758 
     | 
    
         
             
                mini_lat=np.min(lats)
         
     | 
| 
         @@ -758,7 +765,7 @@ def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buff 
     | 
|
| 
       758 
765 
     | 
    
         
             
                disb=disrech
         
     | 
| 
       759 
766 
     | 
    
         
             
                disl=disrech
         
     | 
| 
       760 
767 
     | 
    
         
             
                disr=disrech
         
     | 
| 
       761 
     | 
    
         
            -
             
     | 
| 
      
 768 
     | 
    
         
            +
             
     | 
| 
       762 
769 
     | 
    
         
             
                print('lon max ',maxi_lon,mini_lon,me_lat,maxi_lat,mini_lat)
         
     | 
| 
       763 
770 
     | 
    
         
             
                for i in range(lon.shape[0]):
         
     | 
| 
       764 
771 
     | 
    
         
             
                    # print(i)
         
     | 
| 
         @@ -766,27 +773,27 @@ def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buff 
     | 
|
| 
       766 
773 
     | 
    
         
             
                        if ct.dis2pix(lat[i,j], lon[i,j], maxi_lat, lon[i,j])<disu and lat[i,j]>=maxi_lat:
         
     | 
| 
       767 
774 
     | 
    
         
             
                            iu=i
         
     | 
| 
       768 
775 
     | 
    
         
             
                            disu=ct.dis2pix(lat[i,j], lon[i,j], maxi_lat, lon[i,j])
         
     | 
| 
       769 
     | 
    
         
            -
             
     | 
| 
       770 
     | 
    
         
            -
                        if ct.dis2pix(lat[i,j], lon[i,j], mini_lat, lon[i,j])<disb and lat[i,j]<=mini_lat: 
     | 
| 
      
 776 
     | 
    
         
            +
             
     | 
| 
      
 777 
     | 
    
         
            +
                        if ct.dis2pix(lat[i,j], lon[i,j], mini_lat, lon[i,j])<disb and lat[i,j]<=mini_lat:
         
     | 
| 
       771 
778 
     | 
    
         
             
                            ib=i
         
     | 
| 
       772 
779 
     | 
    
         
             
                            disb=ct.dis2pix(lat[i,j], lon[i,j], mini_lat, lon[i,j])
         
     | 
| 
       773 
     | 
    
         
            -
             
     | 
| 
      
 780 
     | 
    
         
            +
             
     | 
| 
       774 
781 
     | 
    
         
             
                        if ct.dis2pix(lat[i,j], lon[i,j], me_lat, mini_lon)<disl and lon[i,j]<=mini_lon:
         
     | 
| 
       775 
782 
     | 
    
         
             
                            jl=j
         
     | 
| 
       776 
783 
     | 
    
         
             
                            disl=ct.dis2pix(lat[i,j], lon[i,j], me_lat, mini_lon)
         
     | 
| 
       777 
     | 
    
         
            -
             
     | 
| 
       778 
     | 
    
         
            -
                        if ct.dis2pix(lat[i,j], lon[i,j], me_lat, maxi_lon)<disr and lon[i,j]>=maxi_lon: 
     | 
| 
       779 
     | 
    
         
            -
             
     | 
| 
      
 784 
     | 
    
         
            +
             
     | 
| 
      
 785 
     | 
    
         
            +
                        if ct.dis2pix(lat[i,j], lon[i,j], me_lat, maxi_lon)<disr and lon[i,j]>=maxi_lon:
         
     | 
| 
      
 786 
     | 
    
         
            +
             
     | 
| 
       780 
787 
     | 
    
         
             
                            jr=j
         
     | 
| 
       781 
788 
     | 
    
         
             
                            disr=ct.dis2pix(lat[i,j], lon[i,j], me_lat, maxi_lon)
         
     | 
| 
       782 
     | 
    
         
            -
             
     | 
| 
       783 
     | 
    
         
            -
                print(disu,disr,disb,disl) 
     | 
| 
      
 789 
     | 
    
         
            +
             
     | 
| 
      
 790 
     | 
    
         
            +
                print(disu,disr,disb,disl)
         
     | 
| 
       784 
791 
     | 
    
         
             
                print(iu,ib,jl,jr)
         
     | 
| 
       785 
792 
     | 
    
         
             
                print('aire latitudinale de recherche : '+"{:.0f}".format(lat[int(ib),int(jl)])+' '+"{:.0f}".format(lat[int(iu),int(jl)]))
         
     | 
| 
       786 
793 
     | 
    
         
             
                ide=iu-2;ifi=ib+2
         
     | 
| 
       787 
794 
     | 
    
         
             
                if ide<0:ide=0;
         
     | 
| 
       788 
795 
     | 
    
         
             
                if ifi>lon.shape[0]:ifi=lon.shape[0]
         
     | 
| 
       789 
     | 
    
         
            -
             
     | 
| 
      
 796 
     | 
    
         
            +
             
     | 
| 
       790 
797 
     | 
    
         
             
                jde=jl-2;jfi=jr+2
         
     | 
| 
       791 
798 
     | 
    
         
             
                if jde<0:jde=0
         
     | 
| 
       792 
799 
     | 
    
         
             
                if jr>lon.shape[0]:jfi=lon.shape[1]
         
     | 
| 
         @@ -800,36 +807,36 @@ def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buff 
     | 
|
| 
       800 
807 
     | 
    
         
             
                            # msk_stp=lons[((abs(lons-xlb_ur[i,j])<100)&(abs(lats-ylb_ur[i,j])<100))]
         
     | 
| 
       801 
808 
     | 
    
         
             
                            if center_or_all !=2:
         
     | 
| 
       802 
809 
     | 
    
         
             
                                if center_or_all==1:
         
     | 
| 
       803 
     | 
    
         
            -
             
     | 
| 
       804 
     | 
    
         
            -
                                    msk_stp=lons[((ct.dis2pix(lats, lons, lat[i,j], lon[i,j])<discheck)| 
     | 
| 
      
 810 
     | 
    
         
            +
             
     | 
| 
      
 811 
     | 
    
         
            +
                                    msk_stp=lons[((ct.dis2pix(lats, lons, lat[i,j], lon[i,j])<discheck)|
         
     | 
| 
       805 
812 
     | 
    
         
             
                                                 ((ct.dis2pix(lats, lons, ylb_ur[i,j], xlb_ur[i,j]))<discheck)|
         
     | 
| 
       806 
813 
     | 
    
         
             
                                                 ((ct.dis2pix(lats, lons, ylb_ul[i,j], xlb_ul[i,j]))<discheck)|
         
     | 
| 
       807 
814 
     | 
    
         
             
                                                 (ct.dis2pix(lats, lons, ylb_bl[i,j], xlb_bl[i,j])<discheck)|
         
     | 
| 
       808 
815 
     | 
    
         
             
                                                ((ct.dis2pix(lats, lons, ylb_br[i,j], xlb_br[i,j]))<discheck))]
         
     | 
| 
       809 
     | 
    
         
            -
             
     | 
| 
       810 
     | 
    
         
            -
             
     | 
| 
      
 816 
     | 
    
         
            +
             
     | 
| 
      
 817 
     | 
    
         
            +
             
     | 
| 
       811 
818 
     | 
    
         
             
                                else:
         
     | 
| 
       812 
     | 
    
         
            -
                                    msk_stp=lons[(ct.dis2pix(lats, lons, lat[i,j], lon[i,j])<discheck)] 
     | 
| 
       813 
     | 
    
         
            -
             
     | 
| 
      
 819 
     | 
    
         
            +
                                    msk_stp=lons[(ct.dis2pix(lats, lons, lat[i,j], lon[i,j])<discheck)]
         
     | 
| 
      
 820 
     | 
    
         
            +
             
     | 
| 
       814 
821 
     | 
    
         
             
                                if np.size(msk_stp)!=0:#print('ok');
         
     | 
| 
       815 
822 
     | 
    
         
             
                                    print(i,j)
         
     | 
| 
       816 
823 
     | 
    
         
             
                                    MSK[i,j]=1
         
     | 
| 
       817 
     | 
    
         
            -
             
     | 
| 
      
 824 
     | 
    
         
            +
             
     | 
| 
       818 
825 
     | 
    
         
             
                            else:
         
     | 
| 
       819 
     | 
    
         
            -
                                dists=np.matrix([ct.dis2pix(center_pixel_lat, center_pixel_lon, lat[i,j], lon[i,j]), 
     | 
| 
      
 826 
     | 
    
         
            +
                                dists=np.matrix([ct.dis2pix(center_pixel_lat, center_pixel_lon, lat[i,j], lon[i,j]),
         
     | 
| 
       820 
827 
     | 
    
         
             
                                             ct.dis2pix(center_pixel_lat, center_pixel_lon, ylb_ur[i,j], xlb_ur[i,j]),
         
     | 
| 
       821 
828 
     | 
    
         
             
                                             ct.dis2pix(center_pixel_lat, center_pixel_lon, ylb_ul[i,j], xlb_ul[i,j]),
         
     | 
| 
       822 
829 
     | 
    
         
             
                                             ct.dis2pix(center_pixel_lat, center_pixel_lon, ylb_bl[i,j], xlb_bl[i,j]),
         
     | 
| 
       823 
830 
     | 
    
         
             
                                             ct.dis2pix(center_pixel_lat, center_pixel_lon, ylb_br[i,j], xlb_br[i,j])])
         
     | 
| 
       824 
831 
     | 
    
         
             
                                min_dist=np.min(dists)
         
     | 
| 
       825 
     | 
    
         
            -
             
     | 
| 
      
 832 
     | 
    
         
            +
             
     | 
| 
       826 
833 
     | 
    
         
             
                                if min_dist<min_dist1:
         
     | 
| 
       827 
834 
     | 
    
         
             
                                    min_dist1=min_dist
         
     | 
| 
       828 
835 
     | 
    
         
             
                                    iic=i;jjc=j
         
     | 
| 
       829 
836 
     | 
    
         
             
                if center_or_all==2:
         
     | 
| 
       830 
837 
     | 
    
         
             
                    MSK[iic-buffer:iic+buffer+1,jjc-buffer:jjc+buffer+1]=1
         
     | 
| 
       831 
     | 
    
         
            -
             
     | 
| 
       832 
     | 
    
         
            -
             
     | 
| 
      
 838 
     | 
    
         
            +
             
     | 
| 
      
 839 
     | 
    
         
            +
             
     | 
| 
       833 
840 
     | 
    
         
             
                "writing the output netcdf with the mask"
         
     | 
| 
       834 
841 
     | 
    
         | 
| 
       835 
842 
     | 
    
         
             
                coords=dict(
         
     | 
| 
         @@ -840,7 +847,7 @@ def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buff 
     | 
|
| 
       840 
847 
     | 
    
         
             
                    data=np.transpose(np.zeros([lon.shape[0],lat.shape[1]])),
         
     | 
| 
       841 
848 
     | 
    
         
             
                    dims=["y","x"],
         
     | 
| 
       842 
849 
     | 
    
         
             
                    coords=coords,
         
     | 
| 
       843 
     | 
    
         
            -
                    ) 
     | 
| 
      
 850 
     | 
    
         
            +
                    )
         
     | 
| 
       844 
851 
     | 
    
         
             
                Mar_rain=xr.DataArray(
         
     | 
| 
       845 
852 
     | 
    
         
             
                    data=np.transpose(MSK),
         
     | 
| 
       846 
853 
     | 
    
         
             
                    dims=["y","x"],
         
     | 
| 
         @@ -854,7 +861,7 @@ def mask_belgiumV2(lon,lat,path_in,path_out,center_or_all=2,discheck=300000,buff 
     | 
|
| 
       854 
861 
     | 
    
         
             
                Mar_ds.to_netcdf(path_out,mode='w',format=format1)
         
     | 
| 
       855 
862 
     | 
    
         
             
                MSK=[MSK==1]
         
     | 
| 
       856 
863 
     | 
    
         
             
                return (MSK)
         
     | 
| 
       857 
     | 
    
         
            -
             
     | 
| 
      
 864 
     | 
    
         
            +
             
     | 
| 
       858 
865 
     | 
    
         
             
            def dis2pix(lat1,lon1,lat2,lon2):
         
     | 
| 
       859 
866 
     | 
    
         
             
                lat1,lon1,lat2,lon2=np.deg2rad(lat1),np.deg2rad(lon1),np.deg2rad(lat2),np.deg2rad(lon2)
         
     | 
| 
       860 
867 
     | 
    
         
             
                dis=np.arccos(np.sin(lat1)*np.sin(lat2)+np.cos(lat1)*np.cos(lat2)*np.cos(abs(lon1-lon2)))*6371000
         
     | 
| 
         @@ -873,7 +880,7 @@ def grid_mean(folder,year,var,season,sum_or_mean=0,nts=24,lev=0,nf=0,fn1='__'): 
     | 
|
| 
       873 
880 
     | 
    
         
             
                # print(fn)
         
     | 
| 
       874 
881 
     | 
    
         
             
                seasons_names=['SP','SU','F','W','DJF','MAM','JJA','SON']
         
     | 
| 
       875 
882 
     | 
    
         
             
                if season!='Y':
         
     | 
| 
       876 
     | 
    
         
            -
             
     | 
| 
      
 883 
     | 
    
         
            +
             
     | 
| 
       877 
884 
     | 
    
         
             
                    beg_seas=[81,173,265,356,335,60,152,244]
         
     | 
| 
       878 
885 
     | 
    
         
             
                    end_seas=[172,264,355,80,59,151,243,334]
         
     | 
| 
       879 
886 
     | 
    
         
             
                    for i in range(8):
         
     | 
| 
         @@ -911,7 +918,7 @@ def grid_mean(folder,year,var,season,sum_or_mean=0,nts=24,lev=0,nf=0,fn1='__'): 
     | 
|
| 
       911 
918 
     | 
    
         
             
                                        [:,:,0:es*nts+nts])
         
     | 
| 
       912 
919 
     | 
    
         
             
                            Ds=np.append(Ds,np.transpose(np.array(xr.open_dataset(fn1)['MBRR'])+\
         
     | 
| 
       913 
920 
     | 
    
         
             
                                            np.array(xr.open_dataset(fn1)['MBSF']))\
         
     | 
| 
       914 
     | 
    
         
            -
                                            [:,:,(bs-1)*nts+1:],axis=2) 
     | 
| 
      
 921 
     | 
    
         
            +
                                            [:,:,(bs-1)*nts+1:],axis=2)
         
     | 
| 
       915 
922 
     | 
    
         
             
                            Ds=np.average(Ds,axis=2)
         
     | 
| 
       916 
923 
     | 
    
         
             
                else:
         
     | 
| 
       917 
924 
     | 
    
         
             
                    mat=np.array(xr.open_dataset(fn)[var])
         
     | 
| 
         @@ -937,23 +944,23 @@ def grid_mean(folder,year,var,season,sum_or_mean=0,nts=24,lev=0,nf=0,fn1='__'): 
     | 
|
| 
       937 
944 
     | 
    
         
             
                        elif season=='Y'  :
         
     | 
| 
       938 
945 
     | 
    
         
             
                            mat=np.transpose(mat)\
         
     | 
| 
       939 
946 
     | 
    
         
             
                                    [:,:,:]
         
     | 
| 
       940 
     | 
    
         
            -
             
     | 
| 
      
 947 
     | 
    
         
            +
             
     | 
| 
       941 
948 
     | 
    
         
             
                        else:
         
     | 
| 
       942 
949 
     | 
    
         
             
                            mat=np.transpose(mat)\
         
     | 
| 
       943 
950 
     | 
    
         
             
                                    [:,:,(bs-1)*nts+1: es*nts+nts]
         
     | 
| 
       944 
     | 
    
         
            -
             
     | 
| 
       945 
     | 
    
         
            -
             
     | 
| 
      
 951 
     | 
    
         
            +
             
     | 
| 
      
 952 
     | 
    
         
            +
             
     | 
| 
       946 
953 
     | 
    
         
             
                    if sum_or_mean:
         
     | 
| 
       947 
     | 
    
         
            -
             
     | 
| 
      
 954 
     | 
    
         
            +
             
     | 
| 
       948 
955 
     | 
    
         
             
                            Ds=np.sum(mat,axis=2)
         
     | 
| 
       949 
     | 
    
         
            -
             
     | 
| 
      
 956 
     | 
    
         
            +
             
     | 
| 
       950 
957 
     | 
    
         
             
                    else:
         
     | 
| 
       951 
958 
     | 
    
         
             
                            print(axis)
         
     | 
| 
       952 
959 
     | 
    
         
             
                            Ds=np.average(mat,axis=2)
         
     | 
| 
       953 
960 
     | 
    
         | 
| 
       954 
     | 
    
         
            -
             
     | 
| 
      
 961 
     | 
    
         
            +
             
     | 
| 
       955 
962 
     | 
    
         
             
                return(Ds)
         
     | 
| 
       956 
     | 
    
         
            -
             
     | 
| 
      
 963 
     | 
    
         
            +
             
     | 
| 
       957 
964 
     | 
    
         
             
            def find_pix_be(lon_p,lat_p,lons,lats):
         
     | 
| 
       958 
965 
     | 
    
         
             
                Lb72=pyproj.Proj(projparams='epsg:31370')
         
     | 
| 
       959 
966 
     | 
    
         
             
                xl,yl=Lb72(lon_p,lat_p)
         
     | 
| 
         @@ -990,18 +997,18 @@ def find_MARs_closest_pixel(lonsm,latsm,lonsi,latsi,neighbours=1): 
     | 
|
| 
       990 
997 
     | 
    
         
             
                                    else:
         
     | 
| 
       991 
998 
     | 
    
         
             
                                        if dis2pixels[i,j,k,l]<dists[n] and\
         
     | 
| 
       992 
999 
     | 
    
         
             
                                            dis2pixels[i,j,k,l]>dists[n-1]:
         
     | 
| 
       993 
     | 
    
         
            -
                                            dists[n]=dis2pixels[i,j,k,l] 
     | 
| 
      
 1000 
     | 
    
         
            +
                                            dists[n]=dis2pixels[i,j,k,l]
         
     | 
| 
       994 
1001 
     | 
    
         
             
                                            output[i,j,n,0]=k
         
     | 
| 
       995 
1002 
     | 
    
         
             
                                            output[i,j,n,1]=l
         
     | 
| 
       996 
1003 
     | 
    
         
             
                                            output[i,j,n,2]=1/(dists[n]/1000)
         
     | 
| 
       997 
1004 
     | 
    
         
             
                return(output)
         
     | 
| 
       998 
     | 
    
         
            -
             
     | 
| 
      
 1005 
     | 
    
         
            +
             
     | 
| 
       999 
1006 
     | 
    
         
             
            def IPCC_cmap():
         
     | 
| 
       1000 
1007 
     | 
    
         
             
                cmap = mpl.colors.LinearSegmentedColormap.from_list("", [(84/256, 48/256, 5/256),
         
     | 
| 
       1001 
1008 
     | 
    
         
             
                                                                         (245/256,245/256,245/256),
         
     | 
| 
       1002 
1009 
     | 
    
         
             
                                                                         (0/256,60/256,48/256)])
         
     | 
| 
       1003 
1010 
     | 
    
         
             
                return(cmap)
         
     | 
| 
       1004 
     | 
    
         
            -
             
     | 
| 
      
 1011 
     | 
    
         
            +
             
     | 
| 
       1005 
1012 
     | 
    
         
             
            def draw_cities(m,fs_c=14,fs_C=16):
         
     | 
| 
       1006 
1013 
     | 
    
         
             
                fs=10
         
     | 
| 
       1007 
1014 
     | 
    
         
             
                cities=np.array(['Bruxelles','Charleroi','Liège',
         
     | 
| 
         @@ -1024,16 +1031,16 @@ def draw_cities(m,fs_c=14,fs_C=16): 
     | 
|
| 
       1024 
1031 
     | 
    
         
             
                            plt.text(xv[i], yv[i]-decalage[i], cities[i],fontsize=fs_c,
         
     | 
| 
       1025 
1032 
     | 
    
         
             
                                            ha=ps1[i],va=pos[i],color='k',weight='bold',
         
     | 
| 
       1026 
1033 
     | 
    
         
             
                                            path_effects=[pe.withStroke(linewidth=4, foreground="white")])
         
     | 
| 
       1027 
     | 
    
         
            -
             
     | 
| 
      
 1034 
     | 
    
         
            +
             
     | 
| 
       1028 
1035 
     | 
    
         
             
                        else:
         
     | 
| 
       1029 
1036 
     | 
    
         
             
                            plt.text(xv[i], yv[i]-decalage[i], cities[i],fontsize=fs_C,
         
     | 
| 
       1030 
     | 
    
         
            -
                                            ha=ps1[i],va=pos[i],color='k',weight='bold') 
     | 
| 
       1031 
     | 
    
         
            -
             
     | 
| 
       1032 
     | 
    
         
            -
             
     | 
| 
       1033 
     | 
    
         
            -
             
     | 
| 
      
 1037 
     | 
    
         
            +
                                            ha=ps1[i],va=pos[i],color='k',weight='bold')
         
     | 
| 
      
 1038 
     | 
    
         
            +
             
     | 
| 
      
 1039 
     | 
    
         
            +
             
     | 
| 
      
 1040 
     | 
    
         
            +
             
     | 
| 
       1034 
1041 
     | 
    
         
             
            def draw_stations(m,n_id=1,fs=8):
         
     | 
| 
       1035 
1042 
     | 
    
         | 
| 
       1036 
     | 
    
         
            -
             
     | 
| 
      
 1043 
     | 
    
         
            +
             
     | 
| 
       1037 
1044 
     | 
    
         
             
                   stations_lons=[6.07960,5.912,6.228,
         
     | 
| 
       1038 
1045 
     | 
    
         
             
                                        5.594,5.405,5.255,
         
     | 
| 
       1039 
1046 
     | 
    
         
             
                                        4.591,4.653,4.471,
         
     | 
| 
         @@ -1043,7 +1050,7 @@ def draw_stations(m,n_id=1,fs=8): 
     | 
|
| 
       1043 
1050 
     | 
    
         
             
                                        4.539,5.470,5.072,
         
     | 
| 
       1044 
1051 
     | 
    
         
             
                                        4.470,4.381,3.208,
         
     | 
| 
       1045 
1052 
     | 
    
         
             
                                        2.856,2.668     ]
         
     | 
| 
       1046 
     | 
    
         
            -
             
     | 
| 
      
 1053 
     | 
    
         
            +
             
     | 
| 
       1047 
1054 
     | 
    
         
             
                   stations_lats=[50.511,50.478,50.459,
         
     | 
| 
       1048 
1055 
     | 
    
         
             
                                        49.647,50.037,50.207,
         
     | 
| 
       1049 
1056 
     | 
    
         
             
                                        50.094,50.226,50.478,
         
     | 
| 
         @@ -1053,7 +1060,7 @@ def draw_stations(m,n_id=1,fs=8): 
     | 
|
| 
       1053 
1060 
     | 
    
         
             
                                        51.064,51.170,51.270,
         
     | 
| 
       1054 
1061 
     | 
    
         
             
                                        51.219,51.322
         
     | 
| 
       1055 
1062 
     | 
    
         
             
                                        ,51.322,51.200,51.126]
         
     | 
| 
       1056 
     | 
    
         
            -
             
     | 
| 
      
 1063 
     | 
    
         
            +
             
     | 
| 
       1057 
1064 
     | 
    
         
             
                   stations_names=['Mont-Rigi','Spa','Elsenborn',
         
     | 
| 
       1058 
1065 
     | 
    
         
             
                                          'Buzenol','Saint-Hubert','Humain',
         
     | 
| 
       1059 
1066 
     | 
    
         
             
                                          'Dourbes','Florennes','Gosselies',
         
     | 
| 
         @@ -1063,7 +1070,7 @@ def draw_stations(m,n_id=1,fs=8): 
     | 
|
| 
       1063 
1070 
     | 
    
         
             
                                          'Sint-Katelijne','Kleine-Brogel','Retie',
         
     | 
| 
       1064 
1071 
     | 
    
         
             
                                          'Deurne','Stabroek','Zeebrugge',
         
     | 
| 
       1065 
1072 
     | 
    
         
             
                                          'Middelkerke','Koksijde']
         
     | 
| 
       1066 
     | 
    
         
            -
             
     | 
| 
      
 1073 
     | 
    
         
            +
             
     | 
| 
       1067 
1074 
     | 
    
         
             
                   stations_index=['06494','06490','06496',
         
     | 
| 
       1068 
1075 
     | 
    
         
             
                                    '06484','06476','06472',
         
     | 
| 
       1069 
1076 
     | 
    
         
             
                                    '06455','06456','06449',
         
     | 
| 
         @@ -1079,18 +1086,18 @@ def draw_stations(m,n_id=1,fs=8): 
     | 
|
| 
       1079 
1086 
     | 
    
         
             
                   # m.drawmapscale(5.5,49.2,5.5, 49)
         
     | 
| 
       1080 
1087 
     | 
    
         
             
                   for i in range(np.size(stations_lons)):
         
     | 
| 
       1081 
1088 
     | 
    
         
             
                           plt.text(xv[i], yv[i], te[i],fontsize=fs,
         
     | 
| 
       1082 
     | 
    
         
            -
                                           color='k',weight='bold') 
     | 
| 
       1083 
     | 
    
         
            -
             
     | 
| 
       1084 
     | 
    
         
            -
             
     | 
| 
      
 1089 
     | 
    
         
            +
                                           color='k',weight='bold')
         
     | 
| 
      
 1090 
     | 
    
         
            +
             
     | 
| 
      
 1091 
     | 
    
         
            +
             
     | 
| 
       1085 
1092 
     | 
    
         
             
            def box_plot(data, edge_color, fill_color,ax):
         
     | 
| 
       1086 
1093 
     | 
    
         
             
                bp = ax.boxplot(data, patch_artist=True)
         
     | 
| 
       1087 
     | 
    
         
            -
             
     | 
| 
      
 1094 
     | 
    
         
            +
             
     | 
| 
       1088 
1095 
     | 
    
         
             
                for element in ['boxes', 'whiskers', 'fliers', 'means', 'medians', 'caps']:
         
     | 
| 
       1089 
1096 
     | 
    
         
             
                    plt.setp(bp[element], color=edge_color)
         
     | 
| 
       1090 
1097 
     | 
    
         | 
| 
       1091 
1098 
     | 
    
         
             
                for patch in bp['boxes']:
         
     | 
| 
       1092 
     | 
    
         
            -
                    patch.set(facecolor=fill_color) 
     | 
| 
       1093 
     | 
    
         
            -
             
     | 
| 
      
 1099 
     | 
    
         
            +
                    patch.set(facecolor=fill_color)
         
     | 
| 
      
 1100 
     | 
    
         
            +
             
     | 
| 
       1094 
1101 
     | 
    
         
             
                return bp
         
     | 
| 
       1095 
1102 
     | 
    
         | 
| 
       1096 
1103 
     | 
    
         | 
| 
         @@ -1102,7 +1109,7 @@ def endmonth(year): 
     | 
|
| 
       1102 
1109 
     | 
    
         
             
                return(em)
         
     | 
| 
       1103 
1110 
     | 
    
         | 
| 
       1104 
1111 
     | 
    
         
             
            def radar_coord():
         
     | 
| 
       1105 
     | 
    
         
            -
             
     | 
| 
      
 1112 
     | 
    
         
            +
             
     | 
| 
       1106 
1113 
     | 
    
         
             
                radar='/srv5_tmp3/RADCLIM/2021/20210714230000.radclim.accum1h.hdf'
         
     | 
| 
       1107 
1114 
     | 
    
         
             
                f = h5py.File(radar, "r")
         
     | 
| 
       1108 
1115 
     | 
    
         | 
| 
         @@ -1116,12 +1123,12 @@ def radar_coord(): 
     | 
|
| 
       1116 
1123 
     | 
    
         
             
                lr_x = ul_x + (xsize*xscale)
         
     | 
| 
       1117 
1124 
     | 
    
         
             
                lr_x = ul_x + (xsize*xscale)
         
     | 
| 
       1118 
1125 
     | 
    
         
             
                lr_y = ul_y - (ysize*yscale)
         
     | 
| 
       1119 
     | 
    
         
            -
             
     | 
| 
      
 1126 
     | 
    
         
            +
             
     | 
| 
       1120 
1127 
     | 
    
         
             
                x=np.arange(ul_x, lr_x, xscale) + xscale/2
         
     | 
| 
       1121 
1128 
     | 
    
         
             
                y=np.arange(lr_y, ul_y, yscale) - yscale/2
         
     | 
| 
       1122 
     | 
    
         
            -
             
     | 
| 
      
 1129 
     | 
    
         
            +
             
     | 
| 
       1123 
1130 
     | 
    
         
             
                xx,yy = np.meshgrid(x,y)
         
     | 
| 
       1124 
     | 
    
         
            -
             
     | 
| 
      
 1131 
     | 
    
         
            +
             
     | 
| 
       1125 
1132 
     | 
    
         
             
                yy= np.flip(yy)
         
     | 
| 
       1126 
1133 
     | 
    
         | 
| 
       1127 
1134 
     | 
    
         
             
                inProj=Proj(r'+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=649328 +y_0=665262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ')
         
     | 
| 
         @@ -1144,7 +1151,7 @@ def RGEV(retp,nyears,loc,sca,sha): 
     | 
|
| 
       1144 
1151 
     | 
    
         | 
| 
       1145 
1152 
     | 
    
         
             
            def GEV_frequency(value,loc,sca,sha):
         
     | 
| 
       1146 
1153 
     | 
    
         
             
                prob=1-np.exp(-(1-(((loc-value)*sha)/sca))**(-1/sha))
         
     | 
| 
       1147 
     | 
    
         
            -
             
     | 
| 
      
 1154 
     | 
    
         
            +
             
     | 
| 
       1148 
1155 
     | 
    
         
             
                ret=(1/prob)
         
     | 
| 
       1149 
1156 
     | 
    
         
             
                return(ret)
         
     | 
| 
       1150 
1157 
     | 
    
         | 
| 
         @@ -1161,8 +1168,8 @@ def GEVCI(retp,loc,sc,sh, 
     | 
|
| 
       1161 
1168 
     | 
    
         
             
                return(CI)
         
     | 
| 
       1162 
1169 
     | 
    
         | 
| 
       1163 
1170 
     | 
    
         | 
| 
       1164 
     | 
    
         
            -
             
     | 
| 
       1165 
     | 
    
         
            -
             
     | 
| 
      
 1171 
     | 
    
         
            +
             
     | 
| 
      
 1172 
     | 
    
         
            +
             
     | 
| 
       1166 
1173 
     | 
    
         | 
| 
       1167 
1174 
     | 
    
         
             
            def gumCI(retp,loc,sc,
         
     | 
| 
       1168 
1175 
     | 
    
         
             
                      varloc,varsc,
         
     | 
| 
         @@ -1173,7 +1180,7 @@ def gumCI(retp,loc,sc, 
     | 
|
| 
       1173 
1180 
     | 
    
         
             
                S2T=derloc**2*varloc+dersc**2*varsc+2*derloc*dersc*covlocsc
         
     | 
| 
       1174 
1181 
     | 
    
         
             
                CI=S2T**0.5*1.645
         
     | 
| 
       1175 
1182 
     | 
    
         
             
                return(CI)
         
     | 
| 
       1176 
     | 
    
         
            -
             
     | 
| 
      
 1183 
     | 
    
         
            +
             
     | 
| 
       1177 
1184 
     | 
    
         | 
| 
       1178 
1185 
     | 
    
         
             
            def RGum(retp,nyears,loc,sca):
         
     | 
| 
       1179 
1186 
     | 
    
         
             
                prob=1/(retp)#*nyears)
         
     | 
| 
         @@ -1190,7 +1197,7 @@ def extreme_matrix(fn,ret_per=20,value=50,mx=80,my=50,abs_or_retour=1,ydays=365, 
     | 
|
| 
       1190 
1197 
     | 
    
         | 
| 
       1191 
1198 
     | 
    
         
             
                f=open(fn,'r')
         
     | 
| 
       1192 
1199 
     | 
    
         
             
                indice_suivi=0
         
     | 
| 
       1193 
     | 
    
         
            -
             
     | 
| 
      
 1200 
     | 
    
         
            +
             
     | 
| 
       1194 
1201 
     | 
    
         
             
                mat=np.zeros([mx,my])*float('nan')
         
     | 
| 
       1195 
1202 
     | 
    
         
             
                mv=np.array(ret_per*ydays)
         
     | 
| 
       1196 
1203 
     | 
    
         
             
                for line in f:
         
     | 
| 
         @@ -1216,10 +1223,10 @@ def extreme_matrix(fn,ret_per=20,value=50,mx=80,my=50,abs_or_retour=1,ydays=365, 
     | 
|
| 
       1216 
1223 
     | 
    
         
             
                            th=float(columns[9])
         
     | 
| 
       1217 
1224 
     | 
    
         
             
                            varsh=float(columns[4])
         
     | 
| 
       1218 
1225 
     | 
    
         
             
                            varsc=float(columns[3])
         
     | 
| 
       1219 
     | 
    
         
            -
                            cov=float(columns[5]) 
     | 
| 
      
 1226 
     | 
    
         
            +
                            cov=float(columns[5])
         
     | 
| 
       1220 
1227 
     | 
    
         
             
                            pu=ne/(ydays*(end_year-start_year+1));teta=ncl/ne
         
     | 
| 
       1221 
     | 
    
         
            -
                            if abs_or_retour: 
     | 
| 
       1222 
     | 
    
         
            -
             
     | 
| 
      
 1228 
     | 
    
         
            +
                            if abs_or_retour:
         
     | 
| 
      
 1229 
     | 
    
         
            +
             
     | 
| 
       1223 
1230 
     | 
    
         
             
                                if sha==0:
         
     | 
| 
       1224 
1231 
     | 
    
         
             
                                    continue
         
     | 
| 
       1225 
1232 
     | 
    
         
             
                                mat[i,j]=ct.RGPD(mv,sha,sca,pu,teta,th)
         
     | 
| 
         @@ -1238,7 +1245,7 @@ def extreme_matrix(fn,ret_per=20,value=50,mx=80,my=50,abs_or_retour=1,ydays=365, 
     | 
|
| 
       1238 
1245 
     | 
    
         
             
                              nye=end_year-start_year+1
         
     | 
| 
       1239 
1246 
     | 
    
         
             
                              if abs_or_retour: mat[i,j]=ct.RGEV(ret_per,nye,loc,sca,sha)
         
     | 
| 
       1240 
1247 
     | 
    
         
             
                              else:mat[i,j]=ct.GEV_frequency(value[i,j],loc,sca, sha)
         
     | 
| 
       1241 
     | 
    
         
            -
             
     | 
| 
      
 1248 
     | 
    
         
            +
             
     | 
| 
       1242 
1249 
     | 
    
         
             
                        elif gpd_gev_gum==2:
         
     | 
| 
       1243 
1250 
     | 
    
         
             
                            nye=end_year-start_year+1
         
     | 
| 
       1244 
1251 
     | 
    
         
             
                            loc=float(columns[13])
         
     | 
| 
         @@ -1255,14 +1262,14 @@ def extreme_matrix_V2(fn,ret_per=20,value=50,mx=80,my=50, 
     | 
|
| 
       1255 
1262 
     | 
    
         
             
                                  gpd_gev_gum=0,unst_st=0,var_unst='MKam',y_unst=2021):
         
     | 
| 
       1256 
1263 
     | 
    
         
             
                # print('ok')
         
     | 
| 
       1257 
1264 
     | 
    
         | 
| 
       1258 
     | 
    
         
            -
             
     | 
| 
      
 1265 
     | 
    
         
            +
             
     | 
| 
       1259 
1266 
     | 
    
         
             
                data=ct.df_from_file(fn)
         
     | 
| 
       1260 
1267 
     | 
    
         
             
                mat=np.zeros([mx,my])*float('nan')
         
     | 
| 
       1261 
1268 
     | 
    
         
             
                mv=np.array(ret_per*ydays)
         
     | 
| 
       1262 
     | 
    
         
            -
             
     | 
| 
      
 1269 
     | 
    
         
            +
             
     | 
| 
       1263 
1270 
     | 
    
         
             
                for p in range(data.shape[0]):
         
     | 
| 
       1264 
1271 
     | 
    
         
             
                # for line in f:
         
     | 
| 
       1265 
     | 
    
         
            -
             
     | 
| 
      
 1272 
     | 
    
         
            +
             
     | 
| 
       1266 
1273 
     | 
    
         
             
                        ind_pix=data['indice'][p]
         
     | 
| 
       1267 
1274 
     | 
    
         
             
                        if ind_pix<=my:
         
     | 
| 
       1268 
1275 
     | 
    
         
             
                            i=0;j=ind_pix
         
     | 
| 
         @@ -1274,7 +1281,7 @@ def extreme_matrix_V2(fn,ret_per=20,value=50,mx=80,my=50, 
     | 
|
| 
       1274 
1281 
     | 
    
         
             
                        if j==0:j=my-1;i=i-1
         
     | 
| 
       1275 
1282 
     | 
    
         
             
                        else:j=j-1
         
     | 
| 
       1276 
1283 
     | 
    
         
             
                        if unst_st==0:
         
     | 
| 
       1277 
     | 
    
         
            -
             
     | 
| 
      
 1284 
     | 
    
         
            +
             
     | 
| 
       1278 
1285 
     | 
    
         
             
                            if gpd_gev_gum==0:
         
     | 
| 
       1279 
1286 
     | 
    
         
             
                                sca=data['sc'][p]
         
     | 
| 
       1280 
1287 
     | 
    
         
             
                                sha=data['sh'][p]
         
     | 
| 
         @@ -1285,7 +1292,7 @@ def extreme_matrix_V2(fn,ret_per=20,value=50,mx=80,my=50, 
     | 
|
| 
       1285 
1292 
     | 
    
         
             
                                varsc=data['varsc'][p]
         
     | 
| 
       1286 
1293 
     | 
    
         
             
                                cov=data['cov'][p]
         
     | 
| 
       1287 
1294 
     | 
    
         
             
                                pu=ne/(ydays*(end_year-start_year+1));teta=ncl/ne
         
     | 
| 
       1288 
     | 
    
         
            -
                                if abs_or_retour: 
     | 
| 
      
 1295 
     | 
    
         
            +
                                if abs_or_retour:
         
     | 
| 
       1289 
1296 
     | 
    
         
             
                                    if sha==0:
         
     | 
| 
       1290 
1297 
     | 
    
         
             
                                        continue
         
     | 
| 
       1291 
1298 
     | 
    
         
             
                                    mat[i,j]=ct.RGPD(mv,sha,sca,pu,teta,th)
         
     | 
| 
         @@ -1304,7 +1311,7 @@ def extreme_matrix_V2(fn,ret_per=20,value=50,mx=80,my=50, 
     | 
|
| 
       1304 
1311 
     | 
    
         
             
                                  nye=end_year-start_year+1
         
     | 
| 
       1305 
1312 
     | 
    
         
             
                                  if abs_or_retour: mat[i,j]=ct.RGEV(ret_per,nye,loc,sca,sha)
         
     | 
| 
       1306 
1313 
     | 
    
         
             
                                  else:mat[i,j]=ct.GEV_frequency(value[i,j],loc,sca, sha)
         
     | 
| 
       1307 
     | 
    
         
            -
             
     | 
| 
      
 1314 
     | 
    
         
            +
             
     | 
| 
       1308 
1315 
     | 
    
         
             
                            elif gpd_gev_gum==2:
         
     | 
| 
       1309 
1316 
     | 
    
         
             
                                nye=end_year-start_year+1
         
     | 
| 
       1310 
1317 
     | 
    
         
             
                                loc=data['GUMshape'][p]
         
     | 
| 
         @@ -1326,7 +1333,7 @@ def extreme_matrix_V2(fn,ret_per=20,value=50,mx=80,my=50, 
     | 
|
| 
       1326 
1333 
     | 
    
         
             
                                slam=data['slam'][p]
         
     | 
| 
       1327 
1334 
     | 
    
         
             
                                th=th+(y_unst-start_year)*slam
         
     | 
| 
       1328 
1335 
     | 
    
         
             
                                sca=sca+(y_unst-start_year)*slam
         
     | 
| 
       1329 
     | 
    
         
            -
                                if abs_or_retour: 
     | 
| 
      
 1336 
     | 
    
         
            +
                                if abs_or_retour:
         
     | 
| 
       1330 
1337 
     | 
    
         
             
                                    if sha==0:
         
     | 
| 
       1331 
1338 
     | 
    
         
             
                                        continue
         
     | 
| 
       1332 
1339 
     | 
    
         
             
                                    mat[i,j]=ct.RGPD(mv,sha,sca,pu,teta,th)
         
     | 
| 
         @@ -1348,19 +1355,19 @@ def extreme_matrix_V2(fn,ret_per=20,value=50,mx=80,my=50, 
     | 
|
| 
       1348 
1355 
     | 
    
         
             
                                   nye=end_year-start_year+1
         
     | 
| 
       1349 
1356 
     | 
    
         
             
                                   if abs_or_retour: mat[i,j]=ct.RGEV(ret_per,nye,loc,sca,sha)
         
     | 
| 
       1350 
1357 
     | 
    
         
             
                                   else:mat[i,j]=ct.GEV_frequency(value[i,j],loc,sca, sha)
         
     | 
| 
       1351 
     | 
    
         
            -
             
     | 
| 
      
 1358 
     | 
    
         
            +
             
     | 
| 
       1352 
1359 
     | 
    
         
             
                            elif gpd_gev_gum==2:
         
     | 
| 
       1353 
1360 
     | 
    
         
             
                                 nye=end_year-start_year+1
         
     | 
| 
       1354 
1361 
     | 
    
         
             
                                 loc=data['GUMshape'][p]
         
     | 
| 
       1355 
1362 
     | 
    
         
             
                                 sca=data['GUMscale'][p]
         
     | 
| 
       1356 
1363 
     | 
    
         
             
                                 if abs_or_retour: mat[i,j]=ct.RGum(ret_per,nye,loc,sca)
         
     | 
| 
       1357 
1364 
     | 
    
         
             
                                 else:mat[i,j]=ct.Gum_frequency(value[i,j],loc,sca)
         
     | 
| 
       1358 
     | 
    
         
            -
             
     | 
| 
       1359 
     | 
    
         
            -
             
     | 
| 
       1360 
     | 
    
         
            -
             
     | 
| 
       1361 
     | 
    
         
            -
             
     | 
| 
       1362 
     | 
    
         
            -
             
     | 
| 
       1363 
     | 
    
         
            -
             
     | 
| 
      
 1365 
     | 
    
         
            +
             
     | 
| 
      
 1366 
     | 
    
         
            +
             
     | 
| 
      
 1367 
     | 
    
         
            +
             
     | 
| 
      
 1368 
     | 
    
         
            +
             
     | 
| 
      
 1369 
     | 
    
         
            +
             
     | 
| 
      
 1370 
     | 
    
         
            +
             
     | 
| 
       1364 
1371 
     | 
    
         
             
                return(mat)
         
     | 
| 
       1365 
1372 
     | 
    
         | 
| 
       1366 
1373 
     | 
    
         
             
            def find_clusters(TS1):
         
     | 
| 
         @@ -1380,7 +1387,7 @@ def find_clusters(TS1): 
     | 
|
| 
       1380 
1387 
     | 
    
         
             
                        cl_ind=t
         
     | 
| 
       1381 
1388 
     | 
    
         
             
                        while suiv<r and t1<np.size(TS):
         
     | 
| 
       1382 
1389 
     | 
    
         
             
                            suiv+=1
         
     | 
| 
       1383 
     | 
    
         
            -
             
     | 
| 
      
 1390 
     | 
    
         
            +
             
     | 
| 
       1384 
1391 
     | 
    
         
             
                            # print(t1)
         
     | 
| 
       1385 
1392 
     | 
    
         
             
                            if pd.isna(TS[t1])==False:
         
     | 
| 
       1386 
1393 
     | 
    
         
             
                                # print('ok')
         
     | 
| 
         @@ -1388,13 +1395,13 @@ def find_clusters(TS1): 
     | 
|
| 
       1388 
1395 
     | 
    
         
             
                                if TS[t1]>cl_maxima:cl_maxima=TS[t1];cl_ind=t1
         
     | 
| 
       1389 
1396 
     | 
    
         
             
                                # print(suiv)
         
     | 
| 
       1390 
1397 
     | 
    
         
             
                            t1+=1
         
     | 
| 
       1391 
     | 
    
         
            -
             
     | 
| 
      
 1398 
     | 
    
         
            +
             
     | 
| 
       1392 
1399 
     | 
    
         
             
                        clss=np.append(clss,cl_maxima)
         
     | 
| 
       1393 
1400 
     | 
    
         
             
                        indexes=np.append(indexes,cl_ind)
         
     | 
| 
       1394 
1401 
     | 
    
         
             
                        # print(cls_dates.shape)
         
     | 
| 
       1395 
     | 
    
         
            -
             
     | 
| 
      
 1402 
     | 
    
         
            +
             
     | 
| 
       1396 
1403 
     | 
    
         
             
                        t=t1
         
     | 
| 
       1397 
     | 
    
         
            -
             
     | 
| 
      
 1404 
     | 
    
         
            +
             
     | 
| 
       1398 
1405 
     | 
    
         
             
                    t+=1
         
     | 
| 
       1399 
1406 
     | 
    
         
             
                return(clss,indexes)
         
     | 
| 
       1400 
1407 
     | 
    
         | 
| 
         @@ -1407,21 +1414,21 @@ def df_from_file(fn): 
     | 
|
| 
       1407 
1414 
     | 
    
         
             
                    lines=line.strip()
         
     | 
| 
       1408 
1415 
     | 
    
         
             
                    lines=lines.split()
         
     | 
| 
       1409 
1416 
     | 
    
         
             
                    if suiv>0:
         
     | 
| 
       1410 
     | 
    
         
            -
             
     | 
| 
       1411 
     | 
    
         
            -
             
     | 
| 
      
 1417 
     | 
    
         
            +
             
     | 
| 
      
 1418 
     | 
    
         
            +
             
     | 
| 
       1412 
1419 
     | 
    
         
             
                        dat=lines[0]
         
     | 
| 
       1413 
1420 
     | 
    
         
             
                        vappend=np.zeros([1,np.size(lines[:])])
         
     | 
| 
       1414 
1421 
     | 
    
         
             
                        # dates=np.append(dates,dat[1:-1])
         
     | 
| 
       1415 
1422 
     | 
    
         
             
                        for i in range(vappend.shape[1]):
         
     | 
| 
       1416 
1423 
     | 
    
         
             
                            vappend[0,i]=float(lines[i])
         
     | 
| 
       1417 
     | 
    
         
            -
             
     | 
| 
      
 1424 
     | 
    
         
            +
             
     | 
| 
       1418 
1425 
     | 
    
         
             
                        if suiv==1:
         
     | 
| 
       1419 
1426 
     | 
    
         
             
                            data=vappend
         
     | 
| 
       1420 
1427 
     | 
    
         
             
                        else:
         
     | 
| 
       1421 
1428 
     | 
    
         
             
                            data=np.append(data,vappend,axis=0)
         
     | 
| 
       1422 
1429 
     | 
    
         
             
                    else:
         
     | 
| 
       1423 
1430 
     | 
    
         
             
                        vnames=lines
         
     | 
| 
       1424 
     | 
    
         
            -
             
     | 
| 
      
 1431 
     | 
    
         
            +
             
     | 
| 
       1425 
1432 
     | 
    
         
             
                data=pd.DataFrame(data)
         
     | 
| 
       1426 
1433 
     | 
    
         
             
                data.columns=vnames
         
     | 
| 
       1427 
1434 
     | 
    
         
             
                return(data)
         
     |