# Verification and conversion¶

Especially when dealing with real-world data we need to verify that our networks are in the right format for further analysis. We also need to convert the formats to each other.

## Verification¶

Both _tacoma.edge_lists and _tacoma.edge_changes need to follow certain restrictions such that all algorithms in the package will work without error. The restrictions are as follows

• All event times including $$t_0$$ and $$t_\mathrm{max}$$ need to be in order and none of them must be equal.
• The lists $$t$$ and edge_lists must be of equal length ($$t$$, edges_in, and edges_out, respectively.
• Each list containing edges must not contain duplicate edges, each edge $$(i,j)$$ must fulfill $$i<j$$, there must not be any self-loops.
• Each edge $$(i,j)$$ must fulfill $$0\leq i<N$$ and $$0\leq j <N$$.
• Entries of edges_in and edges_out corresponding to the same event must not contain the same edges (one edge cannot get activated and deactivated at the same time).
• The map int_to_node must either contain no entries, or N entries and has to be one-to-one.

In order to verify that a temporal_network fulfills these conditions, do

>>> tc.verify(temporal_network)
0


The function will return the number of found errors. It will also be very verbose about any errors. Within verification, any edge where $$i>j$$ will be swapped such that afterwards, $$i<j$$.

## Conversion¶

For different analyses or algorithms we need temporal networks in different formats. Since edge_lists and edge_changes are the main formats one can convert them to each other easily using

E_L = tc.convert(E_C)
E_C = tc.convert(E_L)


edge_trajectories can be obtained using

E_T = tc.convert_to_edge_trajectories(E_C)
E_T = tc.convert_to_edge_trajectories(E_L)


edge_trajectories can only be converted to edge_changes. This is done by

E_C = tc.convert_edge_trajectories(E_T)