Update initialize_params
parent
834bd3b93d
commit
4ddb2845a6
|
@ -22,40 +22,42 @@ def run_barnett_features_for_rapids(input_dataframe, accuracy_limit=51.0, timezo
|
||||||
lonlat, r, w = preprocessing(data_frame, interval=interval, acc_threshold=accuracy_limit, r=r, w=w, tint_m=tint_m, tint_k=tint_k)
|
lonlat, r, w = preprocessing(data_frame, interval=interval, acc_threshold=accuracy_limit, r=r, w=w, tint_m=tint_m, tint_k=tint_k)
|
||||||
mobmatmiss = convert_to_flights_pauses(lonlat, r, w)
|
mobmatmiss = convert_to_flights_pauses(lonlat, r, w)
|
||||||
mobmat = guess_pause(mobmatmiss, min_pause_dur, min_pause_dist)
|
mobmat = guess_pause(mobmatmiss, min_pause_dur, min_pause_dist)
|
||||||
obj = initialize_params(mobmat)
|
obj = initialize_params(mobmat)
|
||||||
lsmf = []
|
|
||||||
lssigloc = []
|
|
||||||
for i in range(n_reps):
|
|
||||||
print("Sim #: ", i+1)
|
|
||||||
out3 = simulate_mobility_gaps(mobmat, obj, wtype, spread_pars)
|
|
||||||
out3 = np.array(out3)
|
|
||||||
IDundef=np.where(out3[:,0]==3)[0]
|
|
||||||
|
|
||||||
if len(IDundef) > 0:
|
|
||||||
out3 = np.delete(out3, IDundef,axis=0)
|
|
||||||
obj3 = initialize_params(out3)
|
|
||||||
|
|
||||||
output_features, slout, row_names = get_mobility_features(out3, obj3, mobmatmiss, timezone, center_rad, interval)
|
|
||||||
lsmf.append(output_features)
|
|
||||||
lssigloc.append(slout)
|
|
||||||
|
|
||||||
#get average
|
|
||||||
np_lsmf = np.array((lsmf))
|
|
||||||
avg_output_features = [] #convert to pandas dataframe and then return this
|
|
||||||
for j in range(len(row_names)):
|
|
||||||
temp_avg = []
|
|
||||||
for i in range(n_reps):
|
|
||||||
temp_avg.append(np_lsmf[i][j])
|
|
||||||
avg_output_features.append(np.mean(temp_avg, axis=0))
|
|
||||||
|
|
||||||
data_for_pandas = []
|
data_for_pandas = []
|
||||||
for idx, row in enumerate(avg_output_features):
|
if obj:
|
||||||
date = row_names[idx]
|
lsmf = []
|
||||||
date_str = str(date[0]) + "-" + str(date[1]) + "-" + str(date[2])
|
lssigloc = []
|
||||||
features = [date_str]
|
for i in range(n_reps):
|
||||||
for feature in row:
|
print("Sim #: ", i+1)
|
||||||
features.append(feature)
|
out3 = simulate_mobility_gaps(mobmat, obj, wtype, spread_pars)
|
||||||
data_for_pandas.append(features)
|
out3 = np.array(out3)
|
||||||
|
IDundef=np.where(out3[:,0]==3)[0]
|
||||||
|
|
||||||
|
if len(IDundef) > 0:
|
||||||
|
out3 = np.delete(out3, IDundef,axis=0)
|
||||||
|
obj3 = initialize_params(out3)
|
||||||
|
|
||||||
|
output_features, slout, row_names = get_mobility_features(out3, obj3, mobmatmiss, timezone, center_rad, interval)
|
||||||
|
lsmf.append(output_features)
|
||||||
|
lssigloc.append(slout)
|
||||||
|
|
||||||
|
#get average
|
||||||
|
np_lsmf = np.array((lsmf))
|
||||||
|
avg_output_features = [] #convert to pandas dataframe and then return this
|
||||||
|
for j in range(len(row_names)):
|
||||||
|
temp_avg = []
|
||||||
|
for i in range(n_reps):
|
||||||
|
temp_avg.append(np_lsmf[i][j])
|
||||||
|
avg_output_features.append(np.mean(temp_avg, axis=0))
|
||||||
|
|
||||||
|
|
||||||
|
for idx, row in enumerate(avg_output_features):
|
||||||
|
date = row_names[idx]
|
||||||
|
date_str = str(date[0]) + "-" + str(date[1]) + "-" + str(date[2])
|
||||||
|
features = [date_str]
|
||||||
|
for feature in row:
|
||||||
|
features.append(feature)
|
||||||
|
data_for_pandas.append(features)
|
||||||
|
|
||||||
column_names = ["local_date", "hometime", "disttravelled", "rog", "maxdiam", "maxhomedist", "siglocsvisited", "avgflightlen", "stdflightlen", "avgflightdur", "stdflightdur", "probpause", "siglocentropy", "minsmissing", "circdnrtn", "wkenddayrtn"]
|
column_names = ["local_date", "hometime", "disttravelled", "rog", "maxdiam", "maxhomedist", "siglocsvisited", "avgflightlen", "stdflightlen", "avgflightdur", "stdflightdur", "probpause", "siglocentropy", "minsmissing", "circdnrtn", "wkenddayrtn"]
|
||||||
df = pd.DataFrame(data_for_pandas, columns = column_names)
|
df = pd.DataFrame(data_for_pandas, columns = column_names)
|
||||||
|
@ -533,7 +535,7 @@ def collapse_pause_in_matrix(matrix, flatmat):
|
||||||
else:
|
else:
|
||||||
output_mat = []
|
output_mat = []
|
||||||
if flatmat[0][0] > 1:
|
if flatmat[0][0] > 1:
|
||||||
output_mat = matrix[0:flatmat[0][0]-1,]
|
output_mat = list(matrix[0:flatmat[0][0]-1,])
|
||||||
|
|
||||||
for i in range(len(flatmat)):
|
for i in range(len(flatmat)):
|
||||||
start_idx = flatmat[i][0]
|
start_idx = flatmat[i][0]
|
||||||
|
@ -733,82 +735,86 @@ def initialize_params(matrix):
|
||||||
two = np.where(np_matrix[:,0] == 2)
|
two = np.where(np_matrix[:,0] == 2)
|
||||||
three = np.where(np_matrix[:,0] == 3)
|
three = np.where(np_matrix[:,0] == 3)
|
||||||
four = np.where(np_matrix[:,0] == 4)
|
four = np.where(np_matrix[:,0] == 4)
|
||||||
|
|
||||||
ID1p1 = one[0]+1
|
|
||||||
condition1 = one[0][len(one[0])-1]
|
|
||||||
if len(one[0]) > 0 and condition1 == len(np_matrix)-1:
|
|
||||||
ID1p1 = ID1p1[:len(ID1p1)-1]
|
|
||||||
all_timestamp = np.apply_along_axis(np.mean, 1, np_matrix[:,[3,6]])
|
|
||||||
all_x = np_matrix[:, 1]
|
|
||||||
all_y = np_matrix[:, 2]
|
|
||||||
|
|
||||||
#which code 1 is followed by 1
|
|
||||||
ind11 = ID1p1[np.where(np_matrix[ID1p1,0] == 1)]
|
|
||||||
|
|
||||||
#which flight(1) followed by pause (2)
|
|
||||||
ind12 = ID1p1[np.where(np_matrix[ID1p1,0] == 2)]
|
|
||||||
|
|
||||||
l1 = len(ind11)
|
|
||||||
l2 = len(ind12)
|
|
||||||
|
|
||||||
if (l1 + l2) > 0:
|
|
||||||
phatall = l2/(l1+l2)
|
|
||||||
|
|
||||||
if (l1+l2) == 0:
|
if len(one) > 1:
|
||||||
phatall = len(two)/(len(one) + len(two))
|
ID1p1 = one[0]+1
|
||||||
|
condition1 = one[0][len(one[0])-1]
|
||||||
|
if len(one[0]) > 0 and condition1 == len(np_matrix)-1:
|
||||||
|
ID1p1 = ID1p1[:len(ID1p1)-1]
|
||||||
|
all_timestamp = np.apply_along_axis(np.mean, 1, np_matrix[:,[3,6]])
|
||||||
|
all_x = np_matrix[:, 1]
|
||||||
|
all_y = np_matrix[:, 2]
|
||||||
|
|
||||||
|
#which code 1 is followed by 1
|
||||||
|
ind11 = ID1p1[np.where(np_matrix[ID1p1,0] == 1)]
|
||||||
|
|
||||||
|
#which flight(1) followed by pause (2)
|
||||||
|
ind12 = ID1p1[np.where(np_matrix[ID1p1,0] == 2)]
|
||||||
|
|
||||||
|
l1 = len(ind11)
|
||||||
|
l2 = len(ind12)
|
||||||
|
|
||||||
|
if (l1 + l2) > 0:
|
||||||
|
phatall = l2/(l1+l2)
|
||||||
|
|
||||||
|
if (l1+l2) == 0:
|
||||||
|
phatall = len(two)/(len(one) + len(two))
|
||||||
|
|
||||||
|
|
||||||
# ------ flight distances & times & pauses -------
|
# ------ flight distances & times & pauses -------
|
||||||
flight_distances = []
|
flight_distances = []
|
||||||
flight_times = []
|
flight_times = []
|
||||||
pause_times = []
|
pause_times = []
|
||||||
|
|
||||||
for row in np_matrix:
|
|
||||||
if row[0] == 1:
|
|
||||||
distance = np.sqrt((row[1]-row[4])**2 + (row[2] - row[5])**2)
|
|
||||||
flight_distances.append(distance)
|
|
||||||
times = row[6] - row[3]
|
|
||||||
flight_times.append(times)
|
|
||||||
if row[0] == 2:
|
|
||||||
pause = row[6] - row[3]
|
|
||||||
pause_times.append(pause)
|
|
||||||
|
|
||||||
fxs = np_matrix[one][:,1]
|
|
||||||
fys = np_matrix[one][:,2]
|
|
||||||
|
|
||||||
fa = np.zeros(len(one[0]))
|
for row in np_matrix:
|
||||||
|
if row[0] == 1:
|
||||||
yvals = np_matrix[one][:,5] - np_matrix[one][:,2]
|
distance = np.sqrt((row[1]-row[4])**2 + (row[2] - row[5])**2)
|
||||||
xvals = np_matrix[one][:,4] - np_matrix[one][:,1]
|
flight_distances.append(distance)
|
||||||
|
times = row[6] - row[3]
|
||||||
|
flight_times.append(times)
|
||||||
|
if row[0] == 2:
|
||||||
|
pause = row[6] - row[3]
|
||||||
|
pause_times.append(pause)
|
||||||
|
|
||||||
IDyg0 = np.where(yvals[:] >=0)[0]
|
fxs = np_matrix[one][:,1]
|
||||||
IDxg0 = np.where(xvals[:] >=0)[0]
|
fys = np_matrix[one][:,2]
|
||||||
IDyl0 = np.where(yvals[:] < 0)[0]
|
|
||||||
IDxl0 = np.where(xvals[:] < 0)[0]
|
|
||||||
|
|
||||||
IDgg = list(set(IDyg0) & set(IDxg0))
|
fa = np.zeros(len(one[0]))
|
||||||
IDlg = list(set(IDyg0) & set(IDxl0))
|
|
||||||
IDgl = list(set(IDyl0) & set(IDxg0))
|
|
||||||
IDll = list(set(IDyl0) & set(IDxl0))
|
|
||||||
IDgg.sort()
|
|
||||||
IDlg.sort()
|
|
||||||
IDgl.sort()
|
|
||||||
IDll.sort()
|
|
||||||
|
|
||||||
fa[IDgg] = np.arctan(list(yvals[IDgg]/xvals[IDgg]))
|
|
||||||
fa[IDgl] = np.arctan(list(yvals[IDgl]/xvals[IDgl]))+2*math.pi
|
|
||||||
fa[IDlg] = np.arctan(list(yvals[IDlg]/xvals[IDlg])) +math.pi
|
|
||||||
fa[IDll] = np.arctan(list(yvals[IDll]/xvals[IDll])) +math.pi
|
|
||||||
|
|
||||||
#flight timestamps
|
yvals = np_matrix[one][:,5] - np_matrix[one][:,2]
|
||||||
flight_timestamps = np_matrix[one][:,3]
|
xvals = np_matrix[one][:,4] - np_matrix[one][:,1]
|
||||||
|
|
||||||
pxs = np_matrix[two][:,1] #x
|
IDyg0 = np.where(yvals[:] >=0)[0]
|
||||||
pys = np_matrix[two][:,2] #y
|
IDxg0 = np.where(xvals[:] >=0)[0]
|
||||||
pts = np_matrix[two][:,3] #pause timestamps
|
IDyl0 = np.where(yvals[:] < 0)[0]
|
||||||
|
IDxl0 = np.where(xvals[:] < 0)[0]
|
||||||
|
|
||||||
the_dict = {'ID1': one, "ID2": two, "ID3": three, "ID4":four, "ID1p1": ID1p1, "allts": all_timestamp, "ind11": ind11, "ind12": ind12, "phatall": phatall, "fd": flight_distances, "ft": flight_times, "fa": fa, "fts": flight_timestamps, "pt": pause_times, "pts": pts, "fxs": fxs, "fys": fys, "pxs": pxs, "pys": pys, "allxs": all_x, "allys": all_y}
|
IDgg = list(set(IDyg0) & set(IDxg0))
|
||||||
return the_dict
|
IDlg = list(set(IDyg0) & set(IDxl0))
|
||||||
|
IDgl = list(set(IDyl0) & set(IDxg0))
|
||||||
|
IDll = list(set(IDyl0) & set(IDxl0))
|
||||||
|
IDgg.sort()
|
||||||
|
IDlg.sort()
|
||||||
|
IDgl.sort()
|
||||||
|
IDll.sort()
|
||||||
|
|
||||||
|
fa[IDgg] = np.arctan(list(yvals[IDgg]/xvals[IDgg]))
|
||||||
|
fa[IDgl] = np.arctan(list(yvals[IDgl]/xvals[IDgl]))+2*math.pi
|
||||||
|
fa[IDlg] = np.arctan(list(yvals[IDlg]/xvals[IDlg])) +math.pi
|
||||||
|
fa[IDll] = np.arctan(list(yvals[IDll]/xvals[IDll])) +math.pi
|
||||||
|
|
||||||
|
#flight timestamps
|
||||||
|
flight_timestamps = np_matrix[one][:,3]
|
||||||
|
|
||||||
|
pxs = np_matrix[two][:,1] #x
|
||||||
|
pys = np_matrix[two][:,2] #y
|
||||||
|
pts = np_matrix[two][:,3] #pause timestamps
|
||||||
|
|
||||||
|
the_dict = {'ID1': one, "ID2": two, "ID3": three, "ID4":four, "ID1p1": ID1p1, "allts": all_timestamp, "ind11": ind11, "ind12": ind12, "phatall": phatall, "fd": flight_distances, "ft": flight_times, "fa": fa, "fts": flight_timestamps, "pt": pause_times, "pts": pts, "fxs": fxs, "fys": fys, "pxs": pxs, "pys": pys, "allxs": all_x, "allys": all_y}
|
||||||
|
return the_dict
|
||||||
|
else:
|
||||||
|
print("No flight")
|
||||||
|
return None
|
||||||
|
|
||||||
#simulate_mobility_gaps
|
#simulate_mobility_gaps
|
||||||
#impute the missing gaps hot-tech computation
|
#impute the missing gaps hot-tech computation
|
||||||
|
@ -1524,4 +1530,4 @@ def get_mobility_features(mobmat, obj, mobmatmiss, timezone, center_rad, interva
|
||||||
outmat[i][14] = dri_output[1] #separately
|
outmat[i][14] = dri_output[1] #separately
|
||||||
|
|
||||||
|
|
||||||
return outmat, slout, daystr_v #daystr_v = row names
|
return outmat, slout, daystr_v #daystr_v = row names
|
||||||
|
|
Loading…
Reference in New Issue