'Represent the atom as an affine objective and conic constraints.'

def canonicalize(self):

    if self.is_constant():
        if self.parameters():
            (rows, cols) = self.size
            param = CallbackParam(self, rows, cols)
            return param.canonical_form
        else:
            return Constant(self.value).canonical_form
    else:
        arg_objs = []
        constraints = []
        for arg in self.args:
            (obj, constr) = arg.canonical_form
            arg_objs.append(obj)
            constraints += constr
        data = self.get_data()
        (graph_obj, graph_constr) = self.graph_implementation(arg_objs, self.size, data)
        return (graph_obj, (constraints + graph_constr))
