yat/classifier/InputRanker.cc

Code
Comments
Other
Rev Date Author Line
89 28 May 04 peter 1 // $Id$
89 28 May 04 peter 2
675 10 Oct 06 jari 3 /*
831 27 Mar 07 peter 4   Copyright (C) 2004 Peter Johansson
2119 12 Dec 09 peter 5   Copyright (C) 2005 Jari Häkkinen, Peter Johansson
4359 23 Aug 23 peter 6   Copyright (C) 2006 Jari Häkkinen, Peter Johansson, Markus Ringnér
4359 23 Aug 23 peter 7   Copyright (C) 2007 Peter Johansson, Markus Ringnér
2119 12 Dec 09 peter 8   Copyright (C) 2008 Jari Häkkinen, Peter Johansson
4359 23 Aug 23 peter 9   Copyright (C) 2012 Peter Johansson
89 28 May 04 peter 10
1437 25 Aug 08 peter 11   This file is part of the yat library, http://dev.thep.lu.se/yat
295 29 Apr 05 peter 12
675 10 Oct 06 jari 13   The yat library is free software; you can redistribute it and/or
675 10 Oct 06 jari 14   modify it under the terms of the GNU General Public License as
1486 09 Sep 08 jari 15   published by the Free Software Foundation; either version 3 of the
675 10 Oct 06 jari 16   License, or (at your option) any later version.
675 10 Oct 06 jari 17
675 10 Oct 06 jari 18   The yat library is distributed in the hope that it will be useful,
675 10 Oct 06 jari 19   but WITHOUT ANY WARRANTY; without even the implied warranty of
675 10 Oct 06 jari 20   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
675 10 Oct 06 jari 21   General Public License for more details.
675 10 Oct 06 jari 22
675 10 Oct 06 jari 23   You should have received a copy of the GNU General Public License
1487 10 Sep 08 jari 24   along with yat. If not, see <http://www.gnu.org/licenses/>.
675 10 Oct 06 jari 25 */
675 10 Oct 06 jari 26
2881 18 Nov 12 peter 27 #include <config.h>
2881 18 Nov 12 peter 28
680 11 Oct 06 jari 29 #include "InputRanker.h"
680 11 Oct 06 jari 30 #include "MatrixLookup.h"
680 11 Oct 06 jari 31 #include "MatrixLookupWeighted.h"
680 11 Oct 06 jari 32 #include "DataLookup1D.h"
680 11 Oct 06 jari 33 #include "DataLookupWeighted1D.h"
680 11 Oct 06 jari 34 #include "Target.h"
779 05 Mar 07 peter 35 #include "yat/statistics/Score.h"
675 10 Oct 06 jari 36 #include "yat/utility/stl_utility.h"
675 10 Oct 06 jari 37
781 05 Mar 07 peter 38 #include <cassert>
680 11 Oct 06 jari 39 #include <cmath>
475 22 Dec 05 peter 40 #include <functional>
475 22 Dec 05 peter 41 #include <utility>
89 28 May 04 peter 42 #include <vector>
89 28 May 04 peter 43
89 28 May 04 peter 44 namespace theplu {
680 11 Oct 06 jari 45 namespace yat {
4200 19 Aug 22 peter 46 namespace classifier {
89 28 May 04 peter 47
420 02 Dec 05 jari 48
4200 19 Aug 22 peter 49   InputRanker::InputRanker(const MatrixLookup& data,
4200 19 Aug 22 peter 50                            const Target& target,
938 05 Oct 07 peter 51                            const statistics::Score& score_object)
134 16 Aug 04 peter 52   {
536 03 Mar 06 peter 53     assert(data.columns()==target.size());
134 16 Aug 04 peter 54     size_t nof_genes = data.rows();
134 16 Aug 04 peter 55
134 16 Aug 04 peter 56     //scoring each input
475 22 Dec 05 peter 57     std::vector<std::pair<double, size_t> > score;
420 02 Dec 05 jari 58     for (size_t i=0; i<nof_genes; i++) {
527 01 Mar 06 peter 59       double area = score_object.score(target,DataLookup1D(data,i,true));
665 05 Oct 06 peter 60       score.push_back(std::make_pair(area,i));
134 16 Aug 04 peter 61     }
134 16 Aug 04 peter 62
134 16 Aug 04 peter 63     //sort the scores and assign id_ and rank_
475 22 Dec 05 peter 64     sort(score.begin(), score.end(), std::greater<std::pair<double,size_t> >());
4200 19 Aug 22 peter 65
475 22 Dec 05 peter 66     id_.resize(nof_genes);
475 22 Dec 05 peter 67     rank_.resize(nof_genes);
665 05 Oct 06 peter 68     score_.resize(nof_genes);
134 16 Aug 04 peter 69     for (size_t i=0; i<nof_genes; i++){
475 22 Dec 05 peter 70       id_[i]=score[i].second;
665 05 Oct 06 peter 71       score_[i]=score[i].first;
4200 19 Aug 22 peter 72       rank_[id_[i]]=i;
134 16 Aug 04 peter 73     }
89 28 May 04 peter 74   }
120 20 Jul 04 peter 75
420 02 Dec 05 jari 76
4200 19 Aug 22 peter 77   InputRanker::InputRanker(const MatrixLookupWeighted& data,
4200 19 Aug 22 peter 78                            const Target& target,
938 05 Oct 07 peter 79                            const statistics::Score& score_object)
624 05 Sep 06 peter 80   {
624 05 Sep 06 peter 81     assert(data.columns()==target.size());
624 05 Sep 06 peter 82     size_t nof_genes = data.rows();
624 05 Sep 06 peter 83
624 05 Sep 06 peter 84     //scoring each input
624 05 Sep 06 peter 85     std::vector<std::pair<double, size_t> > score;
624 05 Sep 06 peter 86     for (size_t i=0; i<nof_genes; i++) {
624 05 Sep 06 peter 87       double area=score_object.score(target,DataLookupWeighted1D(data,i,true));
665 05 Oct 06 peter 88       score.push_back(std::make_pair(area,i));
624 05 Sep 06 peter 89     }
624 05 Sep 06 peter 90
624 05 Sep 06 peter 91     //sort the scores and assign id_ and rank_
624 05 Sep 06 peter 92     sort(score.begin(), score.end(), std::greater<std::pair<double,size_t> >());
4200 19 Aug 22 peter 93
624 05 Sep 06 peter 94     id_.resize(nof_genes);
624 05 Sep 06 peter 95     rank_.resize(nof_genes);
862 10 Sep 07 markus 96     score_.resize(nof_genes);
624 05 Sep 06 peter 97     for (size_t i=0; i<nof_genes; i++){
624 05 Sep 06 peter 98       id_[i]=score[i].second;
665 05 Oct 06 peter 99       score_[i]=score[i].first;
4200 19 Aug 22 peter 100       rank_[id_[i]]=i;
624 05 Sep 06 peter 101     }
624 05 Sep 06 peter 102   }
624 05 Sep 06 peter 103
624 05 Sep 06 peter 104
720 26 Dec 06 jari 105   const std::vector<size_t>& InputRanker::id(void) const
720 26 Dec 06 jari 106   {
720 26 Dec 06 jari 107     return id_;
720 26 Dec 06 jari 108   }
624 05 Sep 06 peter 109
720 26 Dec 06 jari 110
720 26 Dec 06 jari 111   const std::vector<size_t>& InputRanker::rank(void) const
720 26 Dec 06 jari 112   {
720 26 Dec 06 jari 113     return rank_;
720 26 Dec 06 jari 114   }
720 26 Dec 06 jari 115
720 26 Dec 06 jari 116
720 26 Dec 06 jari 117   double InputRanker::score(size_t rank) const
720 26 Dec 06 jari 118   {
720 26 Dec 06 jari 119     return score_[rank];
720 26 Dec 06 jari 120   }
720 26 Dec 06 jari 121
680 11 Oct 06 jari 122 }}} // of namespace classifier, yat, and theplu