Commit fd7953ae authored by Benedikt Zoennchen's avatar Benedikt Zoennchen
Browse files

Merge branch 'issue#242' into 'master'

fix issue #242.

Closes #242

See merge request !66
parents a303cac0 ea3b983c
Pipeline #122557 passed with stages
in 114 minutes and 28 seconds
%% Cell type:markdown id: tags:
### Note
You can find the required data on the Nextcloud data/Paperdaten/2019/TGF2019-vadere
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# expand the cell of the notebook # expand the cell of the notebook
import json import json
...@@ -9,11 +14,15 @@ ...@@ -9,11 +14,15 @@
import math import math
import matplotlib as mpl import matplotlib as mpl
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from matplotlib.lines import Line2D from matplotlib.lines import Line2D
import seaborn as sns import seaborn as sns
sns.set(style="ticks") import functools
import operator
sns.set_context("poster")
sns.set(style="whitegrid", font_scale=1.8)
from IPython.core.display import display, HTML from IPython.core.display import display, HTML
display(HTML('<style>.container { width:100% !important; }</style>')) display(HTML('<style>.container { width:100% !important; }</style>'))
``` ```
...@@ -42,23 +51,20 @@ ...@@ -42,23 +51,20 @@
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
file = "./data/TrajectoryMetric/trajectories_simulation.txt" def load_simulation_data(file):
f = open(file, "r") f = open(file, "r")
header = f.readline(); header = f.readline();
trajectories = dict({}); trajectories = dict({});
for row in f:
for row in f: s = row.split(" ");
s = row.split(" "); pedId = int(s[0]);
pedId = int(s[0]); footsteps = json.loads(s[1]);
footsteps = json.loads(s[1]); trajectories[pedId] = footsteps[0]['footSteps'];
trajectories[pedId] = footsteps[0]['footSteps']; return trajectories_to_dataframe(trajectories)
ptrajectories = trajectories_to_dataframe(trajectories)
ptrajectories.head()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Convert experiment data into a DataFrame # Convert experiment data into a DataFrame
...@@ -80,29 +86,29 @@ ...@@ -80,29 +86,29 @@
#print(trajectories) #print(trajectories)
last_ped_id = None last_ped_id = None
lastX = None lastX = None
lastY = None lastY = None
for row in data.itertuples(): for row in data.itertuples():
endX = row.x / 100 + 18.7 endX = row.x / 100.0 + 18.7
endY = row.y / 100 + 4.2 endY = row.y / 100.0 + 4.2
startTime = row.timeStep / fps - 1/fps startTime = row.timeStep / fps - 1/fps
endTime = row.timeStep / fps endTime = row.timeStep / fps
if last_ped_id is None or last_ped_id != row.pedestrianId: if last_ped_id is None or last_ped_id != row.pedestrianId:
startX = np.nan startX = np.nan
startY = np.nan startY = np.nan
distance = np.nan distance = np.nan
velocity = np.nan velocity = np.nan
else: else:
startX = lastX / 100 + 18.7 startX = lastX / 100.0 + 18.7
startY = lastY / 100 + 4.2 startY = lastY / 100.0 + 4.2
distance = np.sqrt(np.square(endX - startX) + np.square(endY - startY)) distance = np.sqrt(np.square(endX - startX) + np.square(endY - startY))
velocity = distance / (endTime - startTime) velocity = distance / (endTime - startTime)
rows.append([row.pedestrianId, startX, startY, endX, endY, startTime, endTime, distance, velocity])
last_ped_id = row.pedestrianId last_ped_id = row.pedestrianId
lastX = row.x lastX = row.x
lastY = row.y lastY = row.y
rows.append([row.pedestrianId, startX, startY, endX, endY, startTime, endTime, distance, velocity])
dataframe = pd.DataFrame(rows, columns=['pedestrianId', 'startX', 'startY', 'endX', 'endY','startTime','endTime','distance','velocity']) dataframe = pd.DataFrame(rows, columns=['pedestrianId', 'startX', 'startY', 'endX', 'endY','startTime','endTime','distance','velocity'])
return dataframe return dataframe
def to_trajectories(data): def to_trajectories(data):
trajectories = dict({}) trajectories = dict({})
...@@ -124,92 +130,134 @@ ...@@ -124,92 +130,134 @@
trajectory = [] trajectory = []
pedId = data['pedestrianId'][i] pedId = data['pedestrianId'][i]
return trajectories return trajectories
``` ```
%% Cell type:markdown id: tags:
# Load all data
The following code loads the experiment data as well as the simulated data and transforms everything into the same format (data frame). The simulated trajectories are cut with respect to the camera bounds of the experiment.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
#times = np.linspace(4,10,10) #times = np.linspace(4,10,10)
#euclid_d(get_trajectory(1), get_trajectory(1), times) #euclid_d(get_trajectory(1), get_trajectory(1), times)
#to_trajectories(load_experiment(real_file))[1] #to_trajectories(load_experiment(real_file))[1]
real_file = "./data/TrajectoryMetric/KO/ko-240-120-240/ko-240-120-240_combined_MB.txt" trajectories240o050o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-050-240/ko-240-050-240_combined_MB.txt")
trajectoriesReal = load_experiment(real_file) trajectories240o060o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-060-240/ko-240-060-240_combined_MB.txt")
#trajectoriesReal = to_trajectories(data) trajectories240o080o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-080-240/ko-240-080-240_combined_MB.txt")
trajectoriesReal.query('pedestrianId == 1').head() trajectories240o100o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-100-240/ko-240-100-240_combined_MB.txt")
``` trajectories240o120o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-120-240/ko-240-120-240_combined_MB.txt")
trajectories240o150o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-150-240/ko-240-150-240_combined_MB.txt")
trajectories240o240o240 = load_experiment("./T-junction-experiment-trajectories-files/KO/ko-240-240-240/ko-240-240-240_combined_MB.txt")
trajectoriesReal = pd.concat([trajectories240o050o240, trajectories240o060o240, trajectories240o080o240,
trajectories240o100o240, trajectories240o120o240, trajectories240o150o240,
trajectories240o240o240], ignore_index=True)
%% Cell type:markdown id: tags: # trajectories starting from left
cut_minX = trajectoriesReal[trajectoriesReal["endX"] < 15].groupby(["pedestrianId"])["startX"].min().max() + 0.12
# Convert DataFrame to postvis DataFrame # trajectories starting from right
cut_maxX = trajectoriesReal[trajectoriesReal["endX"] > 21].groupby(["pedestrianId"])["startX"].max().min() - 0.2
%% Cell type:code id: tags: # trajectories ending at top
cut_maxY = trajectoriesReal.groupby(["pedestrianId"])["endY"].max().min() - 0.168
``` python trajectories240o050o240 = cut(trajectories240o050o240, cut_minX, cut_maxX, cut_maxY)
def to_postVis(df): trajectories240o060o240 = cut(trajectories240o060o240, cut_minX, cut_maxX, cut_maxY)
simTimeStep = 0.4 trajectories240o080o240 = cut(trajectories240o080o240, cut_minX, cut_maxX, cut_maxY)
fps = 16 trajectories240o100o240 = cut(trajectories240o100o240, cut_minX, cut_maxX, cut_maxY)
df['timeStep'] = np.ceil(df['endTime'] / (1/fps)).astype(np.int) trajectories240o120o240 = cut(trajectories240o120o240, cut_minX, cut_maxX, cut_maxY)
df['x'] = df['endX'] trajectories240o150o240 = cut(trajectories240o150o240, cut_minX, cut_maxX, cut_maxY)
df['y'] = df['endY'] trajectories240o240o240 = cut(trajectories240o240o240, cut_minX, cut_maxX, cut_maxY)
df['simTime'] = df['endTime']
df = df.drop(columns=['startX','startY','endX','endY','startTime', 'endTime'])
return df
```
%% Cell type:code id: tags: osm_trajectories240o050o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-050-240.txt")
osm_trajectories240o050o240 = cut(osm_trajectories240o050o240, cut_minX, cut_maxX, cut_maxY)
``` python osm_trajectories240o060o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-060-240.txt")
to_postVis(trajectoriesReal).to_csv('expteriment_2.trajectories',index=False,sep=' ') osm_trajectories240o060o240 = cut(osm_trajectories240o060o240, cut_minX, cut_maxX, cut_maxY)
to_postVis(trajectoriesReal).head(10)
```
%% Cell type:markdown id: tags: osm_trajectories240o080o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-080-240.txt")
osm_trajectories240o080o240 = cut(osm_trajectories240o080o240, cut_minX, cut_maxX, cut_maxY)
# Calculate evacution time osm_trajectories240o100o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-100-240.txt")
osm_trajectories240o100o240 = cut(osm_trajectories240o100o240, cut_minX, cut_maxX, cut_maxY)
%% Cell type:markdown id: tags: osm_trajectories240o120o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-120-240.txt")
osm_trajectories240o120o240 = cut(osm_trajectories240o120o240, cut_minX, cut_maxX, cut_maxY)
Evacuation time = endTime - startTime osm_trajectories240o150o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-150-240.txt")
osm_trajectories240o150o240 = cut(osm_trajectories240o150o240, cut_minX, cut_maxX, cut_maxY)
%% Cell type:markdown id: tags: osm_trajectories240o240o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-OSM-240-240-240.txt")
osm_trajectories240o240o240 = cut(osm_trajectories240o240o240, cut_minX, cut_maxX, cut_maxY)
trajectoriesOSM = pd.concat([osm_trajectories240o050o240, osm_trajectories240o060o240, osm_trajectories240o080o240, osm_trajectories240o100o240, osm_trajectories240o120o240, osm_trajectories240o150o240, osm_trajectories240o240o240], ignore_index=True)
bhm_trajectories240o050o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-050-240.txt")
bhm_trajectories240o050o240 = cut(bhm_trajectories240o050o240, cut_minX, cut_maxX, cut_maxY)
bhm_trajectories240o060o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-060-240.txt")
bhm_trajectories240o060o240 = cut(bhm_trajectories240o060o240, cut_minX, cut_maxX, cut_maxY)
bhm_trajectories240o080o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-080-240.txt")
bhm_trajectories240o080o240 = cut(bhm_trajectories240o080o240, cut_minX, cut_maxX, cut_maxY)
bhm_trajectories240o100o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-100-240.txt")
bhm_trajectories240o100o240 = cut(bhm_trajectories240o100o240, cut_minX, cut_maxX, cut_maxY)
bhm_trajectories240o120o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-120-240.txt")
bhm_trajectories240o120o240 = cut(bhm_trajectories240o120o240, cut_minX, cut_maxX, cut_maxY)
bhm_trajectories240o150o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-150-240.txt")
bhm_trajectories240o150o240 = cut(bhm_trajectories240o150o240, cut_minX, cut_maxX, cut_maxY)
## Real data bhm_trajectories240o240o240 = load_simulation_data("./T-junction-sim-trajectory-files/trajectories-BHM-240-240-240.txt")
bhm_trajectories240o240o240 = cut(bhm_trajectories240o240o240, cut_minX, cut_maxX, cut_maxY)
trajectoriesBHM = pd.concat([bhm_trajectories240o050o240, bhm_trajectories240o060o240, bhm_trajectories240o080o240,
bhm_trajectories240o100o240, bhm_trajectories240o120o240, bhm_trajectories240o150o240,
bhm_trajectories240o240o240], ignore_index=True)
```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
# Sum up all measured time deltas of a pedestrian to get the final evacuation time # Sum up all measured time deltas of a pedestrian to get the final evacuation time
copy = trajectoriesReal.copy(deep=True) copy = trajectoriesReal.copy(deep=True)
copy["timeDelta"] = copy["endTime"] - copy["startTime"] copy["timeDelta"] = copy["endTime"] - copy["startTime"]
evacuation_time = copy.groupby(["pedestrianId"])["timeDelta"].sum() et = copy.groupby(["pedestrianId"])["timeDelta"].sum()
# trajectories starting from left
cut_minX = trajectoriesReal[trajectoriesReal["endX"] < 15].groupby(["pedestrianId"])["endX"].min().max()
# trajectories starting from right
cut_maxX = trajectoriesReal[trajectoriesReal["endX"] > 21].groupby(["pedestrianId"])["endX"].max().min()
cut_maxY = trajectoriesReal.groupby(["pedestrianId"])["endY"].max().min()
print("Evacuation time (real data)") print("Evacuation time (real data)")
print("- mean: {:.2f} [s]".format(evacuation_time.mean())) print("- mean: {:.2f} [s]".format(et.mean()))
print("- std: {:.2f} [s]".format(evacuation_time.std())) print("- std: {:.2f} [s]".format(et.std()))
print("- min: {:.2f} [s]".format(evacuation_time.min())) print("- min: {:.2f} [s]".format(et.min()))
print("- max: {:.2f} [s]".format(evacuation_time.max())) print("- max: {:.2f} [s]".format(et.max()))
print("- minX: {:.2f} [m]".format(cut_minX)) print("- minX: {:.2f} [m]".format(cut_minX))
print("- maxX: {:.2f} [m]".format(cut_maxX)) print("- maxX: {:.2f} [m]".format(cut_maxX))
print("- maxY: {:.2f} [m]".format(cut_maxY)) print("- maxY: {:.2f} [m]".format(cut_maxY))
``` ```
%% Cell type:markdown id: tags:
# Convert DataFrame to postvis DataFrame
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
rightX = trajectoriesReal[trajectoriesReal.endX < 16].groupby(["pedestrianId"])["endX"].min().max() def to_postVis(df):
leftX = trajectoriesReal[trajectoriesReal.endX > 16].groupby(["pedestrianId"])["endX"].max().min() simTimeStep = 0.4
topY = trajectoriesReal.groupby(["pedestrianId"])["endY"].max().min() fps = 16
topY df['timeStep'] = np.ceil(df['endTime'] / (1/fps)).astype(np.int)
df['x'] = df['endX']
df['y'] = df['endY']
df['simTime'] = df['endTime']
df = df.drop(columns=['startX','startY','endX','endY','startTime', 'endTime'])
return df
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Simulation data ## Simulation data
...@@ -229,11 +277,11 @@ ...@@ -229,11 +277,11 @@
"""returns a data frame containing the trajectory of one specific agent.""" """returns a data frame containing the trajectory of one specific agent."""
query = 'pedestrianId == ' + str(pedId) query = 'pedestrianId == ' + str(pedId)
return trajectories.query(query) return trajectories.query(query)
def get_trajectories(t, trajectories): def get_trajectories(t, trajectories):
return trajectories[np.logical_and(trajectories.startTime <= t, trajectories.endTime >= t)] return trajectories[np.logical_and(trajectories.startTime <= t, trajectories.endTime > t)]
def get_pedestrianIds(trajectories): def get_pedestrianIds(trajectories):
return trajectories['pedestrianId'].unique() return trajectories['pedestrianId'].unique()
#def get_velocity(trajectories, t, dt): #def get_velocity(trajectories, t, dt):
...@@ -285,10 +333,15 @@ ...@@ -285,10 +333,15 @@
i1 = trajectory[trajectory.endY >= ymax].index.min() i1 = trajectory[trajectory.endY >= ymax].index.min()
i2 = trajectory[trajectory.endY <= ymin].index.min() i2 = trajectory[trajectory.endY <= ymin].index.min()
#assert (i1 is np.nan and i2 is not np.nan) or (i1 is not np.nan and i2 is np.nan) #assert (i1 is np.nan and i2 is not np.nan) or (i1 is not np.nan and i2 is np.nan)
y = ymax if i2 is np.nan or (i1 is not np.nan and i1 < i2) else ymin y = ymax if i2 is np.nan or (i1 is not np.nan and i1 < i2) else ymin
i = i1 if y == ymax else i2 i = i1 if y == ymax else i2
if i is np.nan:
print("i1:"+str(i1))
print("i2:"+str(i2))
assert i is not np.nan
#print(i) #print(i)
# cut the footstep at the tail to exactly fit xmin or xmax # cut the footstep at the tail to exactly fit xmin or xmax
fs = trajectory.loc[i] fs = trajectory.loc[i]
start = np.array([fs["startX"], fs["startY"]]) start = np.array([fs["startX"], fs["startY"]])
end = np.array([fs["endX"], fs["endY"]]) end = np.array([fs["endX"], fs["endY"]])
...@@ -311,41 +364,36 @@ ...@@ -311,41 +364,36 @@
df = df.append(df_head, ignore_index=True) df = df.append(df_head, ignore_index=True)
return df return df
def cuttail_trajectory_by(trajectory, xmin, xmax): def cuttail_trajectory_by(trajectory, xmin, xmax):
#i1 = trajectory[np.logical_and(trajectory.endX >= xmax, trajectory.startX < xmax)].index.max() #i1 = trajectory[np.logical_and(trajectory.endX >= xmax, trajectory.startX < xmax)].index.max()
i1 = trajectory[np.logical_or(trajectory.endX >= xmax, trajectory.startX is np.nan)].index.max() i1 = trajectory[trajectory.startX >= xmax].index.max()
i2 = trajectory[np.logical_or(trajectory.endX <= xmin, trajectory.startX is np.nan)].index.max() i2 = trajectory[trajectory.startX <= xmin].index.max()
#assert (i1 is np.nan and i2 is not np.nan) or (i1 is not np.nan and i2 is np.nan) #assert (i1 is np.nan and i2 is not np.nan) or (i1 is not np.nan and i2 is np.nan)
x = xmax if i2 is np.nan or (i1 is not np.nan and i1 > i2) else xmin x = xmax if i2 is np.nan or (i1 is not np.nan and i1 > i2) else xmin
i = i1 if x == xmax else i2 i = i1 if x == xmax else i2
i = i+1 assert i is not np.nan
# cut the footstep at the tail to exactly fit xmin or xmax # cut the footstep at the tail to exactly fit xmin or xmax
fs = trajectory.loc[i] fs = trajectory.loc[i]
start = np.array([fs["startX"], fs["startY"]]) start = np.array([fs["startX"], fs["startY"]])
end = np.array([fs["endX"], fs["endY"]]) end = np.array([fs["endX"], fs["endY"]])
startTime = fs["startTime"] startTime = fs["startTime"]
endTime = fs["endTime"] endTime = fs["endTime"]
distance = fs["distance"] distance = fs["distance"]
velocity = fs["velocity"] velocity = fs["velocity"]
d = end - start d = end - start
if abs(fs["endX"] - fs["startX"]) > 0.00001: if abs(fs["endX"] - fs["startX"]) > 0.00001:
r = (x - fs["startX"]) / (fs["endX"] - fs["startX"]) r = (fs["endX"] - x) / (fs["endX"] - fs["startX"])
end = start + (d * r) start = end - (d * r)
time = fs["endTime"] - fs["startTime"] time = fs["endTime"] - fs["startTime"]
endTime = fs["startTime"] + (time * r) startTime = fs["endTime"] - (time * r)
distance = np.linalg.norm(end - start) distance = np.linalg.norm(end - start)
if abs(endTime - startTime) < 0.00001: velocity = distance / (endTime - startTime)
if distance < 0.00001: assert startTime <= endTime
velocity = 0
else:
raise exception
else:
velocity = distance / (endTime - startTime)
df = trajectory.loc[i+1:] df = trajectory.loc[i+1:]
llist = [[fs["pedestrianId"],fs["startX"],fs["startY"],fs["startTime"],end[0],end[1],endTime,distance,velocity]] llist = [[fs["pedestrianId"],start[0],start[1],startTime,fs["endX"],fs["endY"],fs["endTime"],distance,velocity]]
df_tail = pd.DataFrame(llist, columns=['pedestrianId','startX','startY','startTime','endX','endY','endTime','distance','velocity']) df_tail = pd.DataFrame(llist, columns=['pedestrianId','startX','startY','startTime','endX','endY','endTime','distance','velocity'])
df_tail = df_tail.append(df, ignore_index=True) df_tail = df_tail.append(df, ignore_index=True)
return df_tail return df_tail
def cuthead_by(trajectories, ymin, ymax): def cuthead_by(trajectories, ymin, ymax):
...@@ -360,24 +408,14 @@ ...@@ -360,24 +408,14 @@
pedIds = get_pedestrianIds(trajectories) pedIds = get_pedestrianIds(trajectories)
for pedId in pedIds: for pedId in pedIds:
df = df.append(cuttail_trajectory_by(get_trajectory(pedId, trajectories), xmin, xmax), ignore_index=True) df = df.append(cuttail_trajectory_by(get_trajectory(pedId, trajectories), xmin, xmax), ignore_index=True)
return df return df
def cut(trajectories): def cut(trajectories, cut_minX, cut_maxX, cut_maxY):
df = cuttail_by(trajectories, cut_minX, cut_maxX) df = cuttail_by(trajectories, cut_minX, cut_maxX)
df = cuthead_by(df, -1000, cut_maxY) df = cuthead_by(df, -1000, cut_maxY)
return df return df
traj = get_trajectory(2, trajectoriesReal)
ts = traj[traj.endX > 22].index.max()
ts
#cut(trajectoriesReal)
cuttail_by(trajectoriesReal, cut_minX, cut_maxX).head()
#cuthead_by(trajectoriesReal, 0, 4).tail()
#traj.loc[100]
#trajectoriesReal.tail()
trajectoriesReal.head()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Helper methods to compute different metrices # Helper methods to compute different metrices
...@@ -396,10 +434,24 @@ ...@@ -396,10 +434,24 @@
return np.sqrt(dx*dx + dy*dy); return np.sqrt(dx*dx + dy*dy);
def mean_velocity_at(t, trajectories): def mean_velocity_at(t, trajectories):
return get_trajectories(t, trajectories)['velocity'].mean() return get_trajectories(t, trajectories)['velocity'].mean()
def evacuation_times(trajectories):
pedIds = get_pedestrianIds(trajectories)
rows = []
for pedId in pedIds:
evacTime = evacuation_time(pedId, trajectories)
rows.append([pedId, evacTime])
return pd.DataFrame(rows, columns=['pedestrianId', 'evacuationTime'])
def evacuation_time(pedId, trajectories):
traj = get_trajectory(pedId, trajectories)
start = traj.iloc[0]['endTime']
end = traj.iloc[len(traj)-1]['endTime']
return end - start
def trajectory_length(trajectory): def trajectory_length(trajectory):
"""Euclidean length of a trajectory.""" """Euclidean length of a trajectory."""
dx = trajectory['startX']-trajectory['endX'] dx = trajectory['startX']-trajectory['endX']
dy = trajectory['startY']-trajectory['endY'] dy = trajectory['startY']-trajectory['endY']
return np.sqrt(dx*dx + dy*dy).sum(); return np.sqrt(dx*dx + dy*dy).sum();
...@@ -533,30 +585,20 @@ ...@@ -533,30 +585,20 @@
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
#start_time(get_trajectory(1, ptrajectories)) trajPos1 = trajectories_position(get_trajectory(2, osm_trajectories240o120o240), [1,2,3,4,5,6,8,9,10,11,12,13])
#max_start_time(ptrajectories) trajPos2 = trajectories_position(get_trajectory(7, osm_trajectories240o120o240), [1,2,3,4,5,6,8,9,10,11,12,13])
#end_time(get_trajectory(1, ptrajectories))
#foot_step_length(get_footstep(get_trajectory(1, ptrajectories), 0))
#trajectory_length(get_trajectory(1, ptrajectories))
#trajectory_speed(get_trajectory(1, ptrajectories))
#cutTraj.mask(cutTraj['startTime'] <= 4 and 4 > cutTraj['endTime'])
#start_time(get_trajectory(1, ptrajectories))
#trajectories_position(ptrajectories, [1,2,3,4]).head()
trajPos1 = trajectories_position(get_trajectory(2, ptrajectories), [1,2,3,4,5,6,8,9,10,11,12,13])
trajPos2 = trajectories_position(get_trajectory(7, ptrajectories), [1,2,3,4,5,6,8,9,10,11,12,13])
trajPos1 = trajPos1[~np.isnan(trajPos1.x)] trajPos1 = trajPos1[~np.isnan(trajPos1.x)]
trajPos2 = trajPos2[~np.isnan(trajPos2.x)] trajPos2 = trajPos2[~np.isnan(trajPos2.x)]
euclid_path_length(trajPos1, trajPos2) euclid_path_length(trajPos1, trajPos2)
euclid_len(ptrajectories,0,10000) euclid_len(osm_trajectories240o120o240,0,10000)
#print(total_inter_agent(ptrajectories, ptrajectories, [1,2]))
t = 0.5 t = 0.5
ttraj = ptrajectories[np.logical_and(ptrajectories.startTime <= t, ptrajectories.endTime >= t)] ttraj = osm_trajectories240o120o240[np.logical_and(osm_trajectories240o120o240.startTime <= t, osm_trajectories240o120o240.endTime >= t)]
#ptrajectories["velocity"] = numpy.linalg.norm( get_trajectories(0.5, osm_trajectories240o120o240).head()
get_trajectories(0.5, ptrajectories).head() #osm_trajectories240o120o240
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
...@@ -583,21 +625,10 @@ ...@@ -583,21 +625,10 @@
return match return match
``` ```
%% Cell typ