00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ALLMODEL
00027 #define ALLMODEL
00028
00029 #ifndef NLMODEL
00030 #include <BALL/QSAR/nonlinearModel.h>
00031 #endif
00032
00033
00034 namespace BALL
00035 {
00036 namespace QSAR
00037 {
00038
00040 class BALL_EXPORT ALLModel : public NonLinearModel
00041 {
00042 public:
00046 ALLModel(const QSARData& q, double kw=4);
00047
00048 ~ALLModel();
00050
00054 void setKw(double kw);
00055
00056 virtual Vector<double> predict(const vector<double>& substance, bool transform=1);
00057
00059 void train(){};
00060
00062 virtual bool optimizeParameters(int d, int no_steps);
00063
00065 double getKw();
00066
00067 virtual void setParameters(vector<double>& v);
00068
00069 virtual vector<double> getParameters() const;
00070
00071 void saveToFile(string filename);
00072
00073 void readFromFile(string filename);
00075
00076
00077 protected:
00078
00082 virtual void calculateWeights(BALL::Matrix<double>& dist, BALL::Vector<double>& w);
00083
00085 void calculateXX(BALL::Vector<double>& w, BALL::Matrix<double>& res);
00086
00088 void calculateXY(BALL::Vector<double>& w, BALL::Matrix<double>& res);
00089
00091 void calculateEuclDistanceMatrix(BALL::Matrix<double>& m1, BALL::Matrix<double>& m2, BALL::Matrix<double>& output);
00093
00094
00099 double kw_;
00100 double lambda_;
00102 };
00103 }
00104 }
00105
00106 #endif // ALLMODEL