The atr library calculates the all-terminal reliability of any undirected graph of class networkx based on an improved version of the deletion-contraction (DC) algorithm. It's a modular library provides a series of methodologies (modules) that calculates the all-terminal reliability for several families of graphs. Each module focuses on a specific graph family such as multi-paths, multi-cycles, multi-cycle trees, and the hamiltonian cake graphs. Althought they can be used alone, the function 'calculate_reliability()' calculates the reliability of the given graph by combining the DC algorithm with the modules to reduce computational time. The function can be adapted to the given network by deciding which modules will be used in the reliability calculation process which works as follows:
Each module checks (identify) if the given network belongs to the module family and calculates its reliability in that case. If it doesn't belong, then the next module provided in the list will be executed. If the network doesn't belong to any of the provided modules, then an iteration of the DC algorithm is performed. Note that if one module positively identifies the network, the other modules will not perform the identification process. This process is repeated for each sub-graph produced in each iteration of the DC algorithm.