diff --git a/Trajectories/trajectories.py b/Trajectories/trajectories.py
index d9ba1987d953d4be6708eeed7261a39dd48f3593..f66f16966ec4a4430b28308b006e39a2e87e7f0f 100755
--- a/Trajectories/trajectories.py
+++ b/Trajectories/trajectories.py
@@ -75,6 +75,7 @@ traj_vert_ind = []
 # An element of traj_vert_ind is a trajectory, represented by a list
 # of vertex indices.
 
+in_deg_prop = g.degree_property_map("in")
 
 # Loop to define traj_prop:
 for n in topology.topological_sort(g):
@@ -84,10 +85,10 @@ for n in topology.topological_sort(g):
     # immediately followed by merging. We do not want to let phantom
     # patterns interrupt trajectories.
 
-    if g.vertex(n).in_degree() == 2:
+    if in_deg_prop[n] == 2:
         pred = g.get_in_neighbors(n)
 
-        if np.all(g.get_in_degrees(pred) == 1) \
+        if in_deg_prop[pred[0]] == 1 == in_deg_prop[pred[1]] \
            and np.all(g.get_out_degrees(pred) == 1):
             n1 = g.get_in_neighbors(pred[0])[0]
             n2 = g.get_in_neighbors(pred[1])[0]
@@ -132,7 +133,7 @@ for n in topology.topological_sort(g):
                     traj_vert_ind[traj_prop[n1]].append(n)
 
     if traj_prop[n] == - 1:
-        if g.vertex(n).in_degree() >= 1:
+        if in_deg_prop[n] >= 1:
             # Find the index of the closest direct predecessor of a node:
             # head of the in-edge with smallest cost.