import numpy as np
import numba
from numba import vectorize, float64, int16
@vectorize(["int16(float64[:,:],float64[:,:],int16)"], target = 'cuda')
def expand_masking(c_Tb,c_flag,Tb_thres):
idx = np.where(c_flag==1)
stop_flag = 1
for i in range(0,np.shape(idx)[1]-1):
idx_y = idx[0][i]
idx_x = idx[1][i]
c_flag[idx_y,idx_x] = 2
for jy in range (0,5):
for jx in range (0,5):
idx_yj = idx_y + jy
idx_xj = idx_x + jx
if (idx_yj>=250 and idx_yj<851 and idx_xj>=250 and idx_xj<=851 and (c_Tb[idx_yj,idx_xj]<=Tb_thres) and c_flag[idx_yj,idx_xj]==0):
c_flag[idx_yj,idx_xj]=1
stop_flag = 0
idx_yj = idx_y + jy
idx_xj = idx_x - jx
if (idx_yj>=250 and idx_yj<851 and idx_xj>=250 and idx_xj<=851 and (c_Tb[idx_yj,idx_xj]<=Tb_thres) and c_flag[idx_yj,idx_xj]==0):
c_flag[idx_yj,idx_xj]=1
stop_flag = 0
idx_yj = idx_y - jy
idx_xj = idx_x + jx
if (idx_yj>=250 and idx_yj<851 and idx_xj>=250 and idx_xj<=851 and (c_Tb[idx_yj,idx_xj]<=Tb_thres) and c_flag[idx_yj,idx_xj]==0):
c_flag[idx_yj,idx_xj]=1
stop_flag = 0
idx_yj = idx_y - jy
idx_xj = idx_x - jx
if (idx_yj>=250 and idx_yj<851 and idx_xj>=250 and idx_xj<=851 and (c_Tb[idx_yj,idx_xj]<=Tb_thres) and c_flag[idx_yj,idx_xj]==0):
c_flag[idx_yj,idx_xj]=1
stop_flag = 0
return stop_flag