Changeset 6 for trunk/lib/nanownlib
- Timestamp:
- 07/09/15 12:27:04 (9 years ago)
- Location:
- trunk/lib/nanownlib
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/nanownlib/__init__.py
r5 r6 214 214 for p in packets: 215 215 key = (p['sent'],p['tcpseq'],p['tcpack'],p['payload_len']) 216 #if (key not in seen)\217 #or p['sent']==1 and (seen[key]['observed'] < p['observed'])\218 #or p['sent']==0 and (seen[key]['observed'] > p['observed']):219 if (key not in seen) or (seen[key]['observed'] > p['observed']):216 if (key not in seen)\ 217 or p['sent']==1 and (seen[key]['observed'] < p['observed'])\ 218 or p['sent']==0 and (seen[key]['observed'] > p['observed']): 219 #if (key not in seen) or (seen[key]['observed'] > p['observed']): 220 220 seen[key] = p 221 221 … … 352 352 pprint.pprint(evaluations) 353 353 354 delta_margin = 0.1 354 delta_margin = 0.15 355 355 best_strim = 0 356 356 best_rtrim = 0 … … 439 439 remaining_tm = trimean([row['packet_rtt'] for row in cursor]) 440 440 441 return (tc, tm_map[tc]-remaining_tm) 441 ret_val = (tc, tm_map[tc]-remaining_tm) 442 print("unusual_case: %s, delta: %f" % ret_val) 443 return ret_val 442 444 443 445 -
trunk/lib/nanownlib/stats.py
r4 r6 227 227 yield (sid,[dict(r) for r in probes]) 228 228 229 230 def subseries(db, probe_type, unusual_case, size=None, offset=None, field='packet_rtt'): 231 cursor = db.conn.cursor() 232 cursor.execute("SELECT max(c) FROM (SELECT count(sample) c FROM probes WHERE type=? GROUP BY test_case)", (probe_type,)) 233 population_size = cursor.fetchone()[0] 234 235 if size == None or size > population_size: 236 size = population_size 237 if offset == None or offset >= population_size or offset < 0: 238 offset = numpy.random.random_integers(0,population_size-1) 239 240 query=""" 241 SELECT %(field)s AS unusual_case, 242 (SELECT avg(%(field)s) FROM probes,analysis 243 WHERE analysis.probe_id=probes.id AND probes.test_case!=:unusual_case AND probes.type=:probe_type AND sample=u.sample) AS other_cases 244 FROM (SELECT probes.sample,%(field)s FROM probes,analysis 245 WHERE analysis.probe_id=probes.id AND probes.test_case =:unusual_case AND probes.type=:probe_type) u 246 LIMIT :size OFFSET :offset 247 """ % {"field":field} 248 249 params = {"probe_type":probe_type, "unusual_case":unusual_case, "offset":offset, "size":size} 250 cursor.execute(query, params) 251 for row in cursor: 252 size -= 1 253 yield dict(row) 254 255 if size > 0: 256 params['offset'] = 0 257 params['size'] = size 258 cursor.execute(query, params) 259 for row in cursor: 260 yield dict(row) 261 262 229 263 # if test_cases=None, include all of them. Otherwise, include only the specified test cases. 230 264 def samples2Distributions(samples, field, test_cases=None): … … 270 304 271 305 306 def bootstrap3(estimator, db, probe_type, unusual_case, subseries_size, num_trials): 307 ret_val = [] 308 for t in range(num_trials): 309 ret_val.append(estimator(subseries(db, probe_type, unusual_case, subseries_size))) 310 311 return ret_val 312 313 272 314 # Returns the test case name that clearly has higher RTT; otherwise, returns None 273 315 def boxTest(params, test_cases, samples): … … 329 371 # Returns 1 if unusual_case is unusual in the expected direction 330 372 # 0 otherwise 331 def midhingeTest(params, unusual_case,greater, samples):332 diffs = list(samples2MeanDiffs(samples, 'packet_rtt', unusual_case))373 def midhingeTest(params, greater, samples): 374 diffs = [s['unusual_case']-s['other_cases'] for s in samples] 333 375 334 376 mh = midhinge(diffs, params['distance'])
Note: See TracChangeset
for help on using the changeset viewer.