Commit 27763f38d96c28cabebccc046208019b940d7b1f
1 parent
4d46623e
Exists in
master
and in
1 other branch
Added configuration file example and fixed config class bugs.
Showing
2 changed files
with
64 additions
and
32 deletions
Show diff stats
src/config.py
| ... | ... | @@ -38,9 +38,7 @@ class Config(): |
| 38 | 38 | self.debug = 0 |
| 39 | 39 | self.verbose = 0 |
| 40 | 40 | self.output = "/dev/null" |
| 41 | - self.config = None | |
| 42 | 41 | self.axi = "/var/lib/apt-xapian-index/index" |
| 43 | - self.axi_values = "/var/lib/apt-xapian-index/values" | |
| 44 | 42 | self.popcon_index = os.path.expanduser("~/.app-recommender/popcon_index") |
| 45 | 43 | self.popcon_dir = os.path.expanduser("~/.app-recommender/popcon_dir") |
| 46 | 44 | self.clusters_dir = os.path.expanduser("~/.app-recommender/clusters_dir") |
| ... | ... | @@ -48,6 +46,7 @@ class Config(): |
| 48 | 46 | self.index_mode = "old" |
| 49 | 47 | self.strategy = "cb" |
| 50 | 48 | self.weight = "bm25" |
| 49 | + self.profile_size = 50 | |
| 51 | 50 | self.load_options() |
| 52 | 51 | self.set_logger() |
| 53 | 52 | |
| ... | ... | @@ -56,21 +55,23 @@ class Config(): |
| 56 | 55 | Print usage help. |
| 57 | 56 | """ |
| 58 | 57 | print "\n [ general ]" |
| 59 | - print " -h, --help Print this help" | |
| 60 | - print " -d, --debug Set logging level to debug" | |
| 61 | - print " -v, --verbose Set logging level to verbose" | |
| 62 | - print " -o, --output=PATH Path to file to save output" | |
| 63 | - print " -c, --config=PATH Path to configuration file" | |
| 58 | + print " -h, --help Print this help" | |
| 59 | + print " -d, --debug Set logging level to debug" | |
| 60 | + print " -v, --verbose Set logging level to verbose" | |
| 61 | + print " -o, --output=PATH Path to file to save output" | |
| 62 | + print "" | |
| 63 | + print " [ data sources ]" | |
| 64 | + print " -a, --axi=PATH Path to apt-xapian-index" | |
| 65 | + print " -p, --popconindex=PATH Path to popcon index" | |
| 66 | + print " -m, --popcondir=PATH Path to popcon submissions dir" | |
| 67 | + print " -u, --indexmode= 'old'|'reindex'|'cluster'|'recluster'" | |
| 68 | + print " -l, --clustersdir=PATH Path to popcon clusters dir" | |
| 69 | + print " -e, --medoids=k Number of medoids for clustering" | |
| 64 | 70 | print "" |
| 65 | 71 | print " [ recommender ]" |
| 66 | - print " -a, --axi=PATH Path to Apt-xapian-index" | |
| 67 | - print " -p, --popconindex=PATH Path to popcon dedicated index" | |
| 68 | - print " -m, --popcondir=PATH Path to popcon submissions dir" | |
| 69 | - print " -u, --indexmode= old, reindex, cluster, recluster" | |
| 70 | - print " -l, --clustersdir=PATH Path to popcon clusters dir" | |
| 71 | - print " -e, --medoids=k Number of medoids for clustering" | |
| 72 | - print " -w, --weight=OPTION Search weighting scheme" | |
| 73 | - print " -s, --strategy=OPTION Recommendation strategy" | |
| 72 | + print " -w, --weight=OPTION Search weighting scheme" | |
| 73 | + print " -s, --strategy=OPTION Recommendation strategy" | |
| 74 | + print " -z, --profile_size=SIZE Size of user profile" | |
| 74 | 75 | print "" |
| 75 | 76 | print " [ weight options ] " |
| 76 | 77 | print " trad = traditional probabilistic weighting" |
| ... | ... | @@ -81,8 +82,7 @@ class Config(): |
| 81 | 82 | print " cbt = content-based using only tags as content " |
| 82 | 83 | print " cbd = content-based using only package descriptions as content " |
| 83 | 84 | print " col = collaborative " |
| 84 | - #print " colct = collaborative through tags content " | |
| 85 | - #print " colcp = collaborative through package descriptions content " | |
| 85 | + print " colct = collaborative through tags content " | |
| 86 | 86 | |
| 87 | 87 | def read_option(self, section, option): |
| 88 | 88 | """ |
| ... | ... | @@ -102,7 +102,8 @@ class Config(): |
| 102 | 102 | try: |
| 103 | 103 | self.config = ConfigParser() |
| 104 | 104 | self.config.read(['/etc/apprecommender/recommender.conf', |
| 105 | - os.path.expanduser('~/apprecommender.rc')]) | |
| 105 | + os.path.expanduser('~/.app_recommender.rc'), | |
| 106 | + 'app_recommender.cfg']) | |
| 106 | 107 | except (MissingSectionHeaderError), err: |
| 107 | 108 | logging.error("Error in config file syntax: %s", str(err)) |
| 108 | 109 | os.abort() |
| ... | ... | @@ -110,21 +111,23 @@ class Config(): |
| 110 | 111 | self.debug = self.read_option('general', 'debug') |
| 111 | 112 | self.debug = self.read_option('general', 'verbose') |
| 112 | 113 | self.output_filename = self.read_option('general', 'output') |
| 113 | - self.config = self.read_option('general', 'config') | |
| 114 | - | |
| 115 | - self.axi = self.read_option('recommender', 'axi') | |
| 116 | - self.popcon_index = self.read_option('recommender', 'popcon_index') | |
| 117 | - self.popcon_dir = self.read_option('recommender', 'popcon_dir') | |
| 118 | - self.index_mode = self.read_option('recommender', 'index_mode') | |
| 119 | - self.clusters_dir = self.read_option('recommender', 'clusters_dir') | |
| 120 | - self.k_medoids = self.read_option('recommender', 'k_medoids') | |
| 114 | + | |
| 115 | + self.axi = self.read_option('data_sources', 'axi') | |
| 116 | + self.popcon_index = os.path.expanduser(self.read_option('data_sources','popcon_index')) | |
| 117 | + self.popcon_dir = os.path.expanduser(self.read_option('data_sources', 'popcon_dir')) | |
| 118 | + self.index_mode = self.read_option('data_sources', 'index_mode') | |
| 119 | + self.clusters_dir = os.path.expanduser(self.read_option('data_sources', 'clusters_dir')) | |
| 120 | + self.k_medoids = self.read_option('data_sources', 'k_medoids') | |
| 121 | + | |
| 121 | 122 | self.weight = self.read_option('recommender', 'weight') |
| 122 | 123 | self.strategy = self.read_option('recommender', 'strategy') |
| 124 | + self.profile_size = self.read_option('recommender', 'profile_size') | |
| 123 | 125 | |
| 124 | - short_options = "hdvo:c:a:p:m:ul:e:w:s:" | |
| 125 | - long_options = ["help", "debug", "verbose", "output=", "config=", | |
| 126 | + short_options = "hdvo:a:p:m:ul:e:w:s:z:" | |
| 127 | + long_options = ["help", "debug", "verbose", "output=", | |
| 126 | 128 | "axi=", "popconindex=", "popcondir=", "indexmode=", |
| 127 | - "clustersdir=", "kmedoids=", "weight=", "strategy="] | |
| 129 | + "clustersdir=", "kmedoids=", "weight=", "strategy=", | |
| 130 | + "profile_size="] | |
| 128 | 131 | try: |
| 129 | 132 | opts, args = getopt.getopt(sys.argv[1:], short_options, |
| 130 | 133 | long_options) |
| ... | ... | @@ -144,11 +147,8 @@ class Config(): |
| 144 | 147 | self.verbose = 1 |
| 145 | 148 | elif o in ("-o", "--output"): |
| 146 | 149 | self.output = p |
| 147 | - elif o in ("-c", "--config"): | |
| 148 | - self.config = p | |
| 149 | 150 | elif o in ("-a", "--axi"): |
| 150 | 151 | self.axi = p + "/index" |
| 151 | - self.axi_values = p + "/values" | |
| 152 | 152 | elif o in ("-p", "--popconindex"): |
| 153 | 153 | self.popcon_index = p |
| 154 | 154 | elif o in ("-m", "--popcondir"): |
| ... | ... | @@ -163,6 +163,8 @@ class Config(): |
| 163 | 163 | self.weight = p |
| 164 | 164 | elif o in ("-s", "--strategy"): |
| 165 | 165 | self.strategy = p |
| 166 | + elif o in ("-z", "--profile_size"): | |
| 167 | + self.strategy = p | |
| 166 | 168 | else: |
| 167 | 169 | assert False, "unhandled option" |
| 168 | 170 | ... | ... |
| ... | ... | @@ -0,0 +1,30 @@ |
| 1 | +# Config file for AppRecommender | |
| 2 | + | |
| 3 | +[general] | |
| 4 | +# logging level | |
| 5 | +debug = 0 | |
| 6 | +verbose = 0 | |
| 7 | +# output file | |
| 8 | +output = /dev/null | |
| 9 | + | |
| 10 | +[data_sources] | |
| 11 | +# path to apt-xapian-index | |
| 12 | +axi = /var/lib/apt-xapian-index/index | |
| 13 | +# old, reindex, cluster, recluster | |
| 14 | +index_mode = old | |
| 15 | +# path to popcon index | |
| 16 | +popcon_index = ~/.app-recommender/popcon_index | |
| 17 | +# path to popcon submissions dir | |
| 18 | +popcon_dir = ~/.app-recommender/popcon_dir | |
| 19 | +# path to popcon clusters dir | |
| 20 | +clusters_dir = ~/.app-recommender/clusters_dir | |
| 21 | +# number of medoids for clustering | |
| 22 | +k_medoids = 100 | |
| 23 | + | |
| 24 | +[recommender] | |
| 25 | +# recommendation strategy | |
| 26 | +strategy = cb | |
| 27 | +# search weighting scheme ('trad' or 'bm25') | |
| 28 | +weight = bm25 | |
| 29 | +# user profile size | |
| 30 | +profile_size = 50 | ... | ... |