00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of the GNU General Public License as published by 00004 * the Free Software Foundation; either version 3 of the License, or 00005 * (at your option) any later version. 00006 * 00007 * Written (W) 2011 Sergey Lisitsyn 00008 * Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society 00009 */ 00010 00011 #ifndef LOCALTANGENTSPACEALIGNMENT_H_ 00012 #define LOCALTANGENTSPACEALIGNMENT_H_ 00013 #include <shogun/lib/config.h> 00014 #ifdef HAVE_LAPACK 00015 #include <shogun/preprocessor/LocallyLinearEmbedding.h> 00016 #include <shogun/features/Features.h> 00017 #include <shogun/distance/Distance.h> 00018 00019 namespace shogun 00020 { 00021 00022 class CFeatures; 00023 00024 class CDistance; 00025 00026 00045 class CLocalTangentSpaceAlignment: public CLocallyLinearEmbedding 00046 { 00047 public: 00048 00050 CLocalTangentSpaceAlignment(); 00051 00053 virtual ~CLocalTangentSpaceAlignment(); 00054 00058 virtual bool init(CFeatures* features); 00059 00062 virtual void cleanup(); 00063 00067 virtual SGMatrix<float64_t> apply_to_feature_matrix(CFeatures* features); 00068 00072 virtual SGVector<float64_t> apply_to_feature_vector(SGVector<float64_t> vector); 00073 00077 virtual inline const char* get_name() const { return "LocalTangentSpaceAlignment"; }; 00078 00082 virtual inline EPreprocessorType get_type() const { return P_LOCALTANGENTSPACEALIGNMENT; }; 00083 00084 protected: 00085 00089 static void* run_ltsa_thread(void* p); 00090 00091 }; 00092 } 00093 00094 #endif /* HAVE_LAPACK */ 00095 #endif /* LOCALTANGENTSPACEALINGMENT_H_ */