'Removes a coordinate transform from the graph.
Parameters
fromsys : class or `None`
The coordinate frame *class* to start from. If `None`,
``transform`` will be searched for and removed (``tosys`` must
also be `None`).
tosys : class or `None`
The coordinate frame *class* to transform into. If `None`,
``transform`` will be searched for and removed (``fromsys`` must
also be `None`).
transform : callable or `None`
The transformation object to be removed or `None`.  If `None`
and ``tosys`` and ``fromsys`` are supplied, there will be no
check to ensure the correct object is removed.'

def remove_transform(self, fromsys, tosys, transform):

    if ((fromsys is None) or (tosys is None)):
        if (not ((tosys is None) and (fromsys is None))):
            raise ValueError(u'fromsys    and    tosys    must    both    be    None    if    either    are')
        if (transform is None):
            raise ValueError(u'cannot    give    all    Nones    to    remove_transform')
        for a in self._graph:
            agraph = self._graph[a]
            for b in agraph:
                if (b is transform):
                    del agraph[b]
                    break
        else:
            raise ValueError(u'Could    not    find    transform    {0}    in    the    graph'.format(transform))
    elif (transform is None):
        self._graph[fromsys].pop(tosys, None)
    else:
        curr = self._graph[fromsys].get(tosys, None)
        if (curr is transform):
            self._graph[fromsys].pop(tosys)
        else:
            raise ValueError(u'Current    transform    from    {0}    to    {1}    is    not    {2}'.format(fromsys, tosys, transform))
    self.invalidate_cache()
