'Sort layers into useful orders.
After this method is done:
pos_phase_order: Order in which nodes have to be updated in the positive
phase.
neg_phase_order: Order in which nodes have to be updated in the negative
phase.
node_list: List of all nodes. All input nodes occur before non input ones.'

def Sort(self):

    non_input_nodes = []
    node_list = list(self.input_datalayer)
    for node in self.layer:
        if (not node.is_input):
            non_input_nodes.append(node)
    node_list.extend(non_input_nodes)
    if self.net.positive_phase_order:
        self.pos_phase_order = [self.GetLayerByName(x) for x in self.net.positive_phase_order]
        self.pos_phase_order.extend([self.GetLayerByName(x) for x in self.unclamped_layer])
    else:
        self.pos_phase_order = non_input_nodes
    if self.net.negative_phase_order:
        self.neg_phase_order = [self.GetLayerByName(x) for x in self.net.negative_phase_order]
    else:
        self.neg_phase_order = node_list
    return node_list
