def write(self, fname):
        """ writes self to txtfile.
            If network is undirected, edge-pairs appear twice.
            
        """
        t_edges = []
        for i in range(len(self)):
            print "extracting edges ", i
            indices = zip(self[i].nonzero()[0], self[i].nonzero()[1])
            to_add = [(u, v, i) for u, v in indices]
            t_edges.extend(to_add)

        t_edges_clean = t_edges[:]
        if not self.is_directed:
            print "cleaning edgelist..."
            for (u, v, d) in t_edges_clean:
                if (v, u, d) in t_edges_clean:
                    t_edges_clean.remove((v, u, d))

        gwh.write_array(t_edges_clean, fname)
        return