#NEWLINE# def inverse( self , X ) : #NEWLINE# #INDENT# '\n        .. todo::\n\n            WRITEME\n        ' #NEWLINE# assert ( X . ndim == 2 ) #NEWLINE# if ( self . inv_P_ is None ) : #NEWLINE# #INDENT# warnings . warn ( 'inv_P_ was None. Computing inverse of P_ now. This will take some time. For efficiency, it is recommended that in the future you compute the inverse in ZCA.fit() instead, by passing it store_inverse=True.' ) #NEWLINE# log . info ( 'inverting...' ) #NEWLINE# self . inv_P_ = numpy . linalg . inv ( self . P_ ) #NEWLINE# log . info ( '...done inverting' ) #NEWLINE# #UNINDENT# return ( self . _gpu_matrix_dot ( X , self . inv_P_ ) + X . mean_ )