def connectedComponents(self):
        visited = [False] * len(self.allrecs)
        # symmetrize the adjacency matrix (which was upper triang so far)
        uptri = np.triu_indices_from(self.recConnections, k=1)
        self.recConnections[(uptri[1], uptri[0])] = self.recConnections[uptri]

        print("Using this adjacency matrix:", self.recConnections)
        componentList = []
        for v in range(len(visited)):
            if not visited[v]:
                component = []
                componentList.append(self.DFS(component, 0, v, visited))
                # Additionally, total sum of absolute adjustments could be minimized if we de-median the shifts
                # just need some testing before doing this
                # component[,1] = component[,1] - np.median(component[,1])

        print("Found the following components and shifts:")
        print(componentList)
        return componentList