Commit bc5f760c46a4faa41be722d0596082a005d7597b

Authored by Tássia Camões Araújo
1 parent a1a2598b
Exists in master and in 1 other branch add_vagrant

Added new options 'filters' and 'pkgs_filter' to config and fixed bug with log o…

…utput (mixed variable name).
Showing 2 changed files with 69 additions and 18 deletions   Show diff stats
src/bin/app_recommender.cfg 0 → 100644
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
  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 +output = log-apprec
  10 +
  11 +[data_sources]
  12 +# path to recommender filters
  13 +filters = ~/.app-recommender/filters
  14 +# path to apt-xapian-index
  15 +#axi = /var/lib/apt-xapian-index/index
  16 +axi = /root/.app-recommender/DesktopAxi
  17 +# DDE url
  18 +dde_url = http://dde.debian.net/dde/q/udd/packages/all/%s?t=json
  19 +# old, reindex, cluster, recluster
  20 +index_mode = old
  21 +# path to popcon index
  22 +popcon_index = ~/.app-recommender/popcon-index_desktop_1000
  23 +# path to popcon submissions dir
  24 +#popcon_dir = ~/.app-recommender/popcon_dir
  25 +popcon_dir = ~/org/popcon.debian.org/popcon-mail/popcon-entries/
  26 +# path to valid_pkgs file
  27 +pkgs_filter = program
  28 +# path to popcon clusters dir
  29 +clusters_dir = ~/.app-recommender/clusters_dir_full
  30 +# number of medoids for clustering
  31 +k_medoids = 100
  32 +# number of popcon submission for indexing
  33 +max_popcon = 1000
  34 +
  35 +[recommender]
  36 +# recommendation strategy
  37 +strategy = cb
  38 +# search weighting scheme ('trad' or 'bm25')
  39 +weight = bm25
  40 +# user profile size
  41 +profile_size = 50
@@ -38,13 +38,15 @@ class Config(): @@ -38,13 +38,15 @@ class Config():
38 self.debug = 0 38 self.debug = 0
39 self.verbose = 0 39 self.verbose = 0
40 self.output = "/dev/null" 40 self.output = "/dev/null"
41 - self.survey_mode = 1  
42 - self.axi = "/var/lib/apt-xapian-index/index" 41 + self.filters = os.path.expanduser("~/.app-recommender/filters")
  42 + #self.axi = "/var/lib/apt-xapian-index/index"
  43 + self.axi = os.path.expanduser("~/.app-recommender/DesktopAxi")
43 #self.dde_url = "http://dde.debian.net/dde/q/udd/packs/all/%s?t=json" 44 #self.dde_url = "http://dde.debian.net/dde/q/udd/packs/all/%s?t=json"
44 self.dde_url = "http://46.4.235.200:8000/q/udd/packages/all/%s?t=json" 45 self.dde_url = "http://46.4.235.200:8000/q/udd/packages/all/%s?t=json"
45 - self.popcon_index = os.path.expanduser("~/.app-recommender/popcon_index")  
46 - self.popcon_dir = os.path.expanduser("~/.app-recommender/popcon_dir")  
47 - self.clusters_dir = os.path.expanduser("~/.app-recommender/clusters_dir") 46 + self.popcon_index = os.path.expanduser("~/.app-recommender/popcon-index")
  47 + self.popcon_dir = os.path.expanduser("~/.app-recommender/popcon-entries")
  48 + self.pkgs_filter = "program"
  49 + self.clusters_dir = os.path.expanduser("~/.app-recommender/clusters-dir")
48 self.k_medoids = 100 50 self.k_medoids = 100
49 self.max_popcon = 1000 51 self.max_popcon = 1000
50 self.index_mode = "old" 52 self.index_mode = "old"
@@ -52,7 +54,7 @@ class Config(): @@ -52,7 +54,7 @@ class Config():
52 self.weight = "bm25" 54 self.weight = "bm25"
53 self.profile_size = 50 55 self.profile_size = 50
54 # options: maximal, voted, desktop 56 # options: maximal, voted, desktop
55 - self.profiling = "maximal" 57 + self.profiling = ["maximal"]
56 self.k_neighbors = 100 58 self.k_neighbors = 100
57 self.load_options() 59 self.load_options()
58 self.set_logger() 60 self.set_logger()
@@ -68,11 +70,13 @@ class Config(): @@ -68,11 +70,13 @@ class Config():
68 print " -o, --output=PATH Path to file to save output" 70 print " -o, --output=PATH Path to file to save output"
69 print "" 71 print ""
70 print " [ data sources ]" 72 print " [ data sources ]"
  73 + print " -f, --filters=PATH Path to filters directory"
  74 + print " -b, --pkgsfilter=FILTER File containing packages to be considered for recommendations"
71 print " -a, --axi=PATH Path to apt-xapian-index" 75 print " -a, --axi=PATH Path to apt-xapian-index"
72 print " -e, --dde=URL DDE url" 76 print " -e, --dde=URL DDE url"
73 print " -p, --popconindex=PATH Path to popcon index" 77 print " -p, --popconindex=PATH Path to popcon index"
74 print " -m, --popcondir=PATH Path to popcon submissions dir" 78 print " -m, --popcondir=PATH Path to popcon submissions dir"
75 - print " -u, --indexmode= 'old'|'reindex'|'cluster'|'recluster'" 79 + print " -u, --indexmode=MODE 'old'|'reindex'|'cluster'|'recluster'"
76 print " -l, --clustersdir=PATH Path to popcon clusters dir" 80 print " -l, --clustersdir=PATH Path to popcon clusters dir"
77 print " -c, --medoids=k Number of medoids for clustering" 81 print " -c, --medoids=k Number of medoids for clustering"
78 print " -x, --maxpopcon=k Number of submissions to be considered" 82 print " -x, --maxpopcon=k Number of submissions to be considered"
@@ -81,7 +85,7 @@ class Config(): @@ -81,7 +85,7 @@ class Config():
81 print " -w, --weight=OPTION Search weighting scheme" 85 print " -w, --weight=OPTION Search weighting scheme"
82 print " -s, --strategy=OPTION Recommendation strategy" 86 print " -s, --strategy=OPTION Recommendation strategy"
83 print " -z, --profilesize=k Size of user profile" 87 print " -z, --profilesize=k Size of user profile"
84 - print " -f, --profiling=OPTION Profile filter strategy" 88 + print " -i, --profiling=OPTION Profile filter strategy"
85 print " -n, --neighbors=k Size of neighborhood for collaboration" 89 print " -n, --neighbors=k Size of neighborhood for collaboration"
86 print "" 90 print ""
87 print " [ weight options ] " 91 print " [ weight options ] "
@@ -121,10 +125,11 @@ class Config(): @@ -121,10 +125,11 @@ class Config():
121 125
122 self.debug = int(self.read_option('general', 'debug')) 126 self.debug = int(self.read_option('general', 'debug'))
123 self.debug = int(self.read_option('general', 'verbose')) 127 self.debug = int(self.read_option('general', 'verbose'))
124 - self.output_filename = self.read_option('general', 'output')  
125 - self.survey_mode = self.read_option('general', 'survey_mode') 128 + self.output = self.read_option('general', 'output')
126 129
127 - self.axi = self.read_option('data_sources', 'axi') 130 + self.filters = os.path.expanduser(self.read_option('data_sources','filters'))
  131 + self.pkgs_filter = self.read_option('data_sources', 'pkgs_filter')
  132 + self.axi = os.path.expanduser(self.read_option('data_sources', 'axi'))
128 self.dde_url = self.read_option('data_sources', 'dde_url') 133 self.dde_url = self.read_option('data_sources', 'dde_url')
129 self.popcon_index = os.path.expanduser(self.read_option('data_sources','popcon_index')) 134 self.popcon_index = os.path.expanduser(self.read_option('data_sources','popcon_index'))
130 self.popcon_dir = os.path.expanduser(self.read_option('data_sources', 'popcon_dir')) 135 self.popcon_dir = os.path.expanduser(self.read_option('data_sources', 'popcon_dir'))
@@ -141,11 +146,12 @@ class Config(): @@ -141,11 +146,12 @@ class Config():
141 self.k_neighbors = int(self.read_option('recommender', 146 self.k_neighbors = int(self.read_option('recommender',
142 'k_neighbors')) 147 'k_neighbors'))
143 148
144 - short_options = "hdvo:a:e:p:m:ul:c:x:w:s:z:f:n:"  
145 - long_options = ["help", "debug", "verbose", "output=",  
146 - "axi=", "dde=", "popconindex=", "popcondir=", "indexmode=",  
147 - "clustersdir=", "kmedoids=", "maxpopcon=", "weight=", "strategy=",  
148 - "profile_size=", "profiling=", "neighbors="] 149 + short_options = "hdvo:f:b:a:e:p:m:u:l:c:x:w:s:z:i:n:"
  150 + long_options = ["help", "debug", "verbose", "output=", "filters=",
  151 + "pkgsfilter=", "axi=", "dde=", "popconindex=",
  152 + "popcondir=", "indexmode=", "clustersdir=", "kmedoids=",
  153 + "maxpopcon=", "weight=", "strategy=", "profile_size=",
  154 + "profiling=", "neighbors="]
149 try: 155 try:
150 opts, args = getopt.getopt(sys.argv[1:], short_options, 156 opts, args = getopt.getopt(sys.argv[1:], short_options,
151 long_options) 157 long_options)
@@ -165,6 +171,10 @@ class Config(): @@ -165,6 +171,10 @@ class Config():
165 self.verbose = 1 171 self.verbose = 1
166 elif o in ("-o", "--output"): 172 elif o in ("-o", "--output"):
167 self.output = p 173 self.output = p
  174 + elif o in ("-f", "--filters"):
  175 + self.filters = p
  176 + elif o in ("-b", "--pkgsfilter"):
  177 + self.pkgs_filter = p
168 elif o in ("-a", "--axi"): 178 elif o in ("-a", "--axi"):
169 self.axi = p + "/index" 179 self.axi = p + "/index"
170 elif o in ("-e", "--dde"): 180 elif o in ("-e", "--dde"):
@@ -211,10 +221,10 @@ class Config(): @@ -211,10 +221,10 @@ class Config():
211 console_handler = logging.StreamHandler(sys.stdout) 221 console_handler = logging.StreamHandler(sys.stdout)
212 console_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s')) 222 console_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
213 console_handler.setLevel(log_level) 223 console_handler.setLevel(log_level)
214 - self.logger.addHandler(console_handler) 224 + #self.logger.addHandler(console_handler)
215 225
216 file_handler = logging.handlers.RotatingFileHandler(self.output, 226 file_handler = logging.handlers.RotatingFileHandler(self.output,
217 - maxBytes=5000, 227 + maxBytes=50000000,
218 backupCount=5) 228 backupCount=5)
219 log_format = '%(asctime)s AppRecommender %(levelname)-8s %(message)s' 229 log_format = '%(asctime)s AppRecommender %(levelname)-8s %(message)s'
220 file_handler.setFormatter(logging.Formatter(log_format)) 230 file_handler.setFormatter(logging.Formatter(log_format))