sipp11
11 years ago
1 changed files with 83 additions and 0 deletions
@ -0,0 +1,83 @@
|
||||
# -*- coding:utf-8 -*- |
||||
''' |
||||
Step 7 |
||||
''' |
||||
#!/usr/bin/env python |
||||
from __future__ import print_function |
||||
from base import create_csv, TARGET_DIR, MODEL_LIST, RAW_DIR |
||||
import os |
||||
import csv |
||||
|
||||
|
||||
COMPARSION_PAIR = [ |
||||
(0, 0), (1, 1), (4, 2), (5, 3), |
||||
(8, 4), (10, 5), (11, 6), (13, 7), |
||||
(15, 8), (16, 9), (17, 10), (19, 11), |
||||
(20, 12), (22, 13), (25, 14), |
||||
(27, 15), (28, 16), (29, 17), (31, 18), |
||||
] |
||||
|
||||
|
||||
def get_test_data(m): |
||||
if not m: |
||||
return [] |
||||
result = [] |
||||
lo_list = [] |
||||
fpath = os.path.join(RAW_DIR, 'LO_TestData.csv') |
||||
with open(fpath, 'rb') as f: |
||||
rows = csv.reader(f) |
||||
rows.next() |
||||
for r in rows: |
||||
if r[1] != m.upper(): |
||||
continue |
||||
result.append(r) |
||||
lo_list.append(r[0]) |
||||
return (lo_list, result) |
||||
|
||||
|
||||
def get_ro_data(m, suffix): |
||||
if not m or not suffix: |
||||
return [] |
||||
result = [] |
||||
fname = '%s-%s.csv' % (m, suffix) |
||||
fpath = os.path.join(TARGET_DIR, 'part7', fname) |
||||
with open(fpath, 'rb') as f: |
||||
rows = csv.reader(f) |
||||
for r in rows: |
||||
result.append(r) |
||||
return result |
||||
|
||||
|
||||
def get_similarity_count(l, r): |
||||
cnt = 0 |
||||
for (x, y) in COMPARSION_PAIR: |
||||
if l[x] == r[y]: |
||||
cnt += 1 |
||||
elif r[y] == 'Y/N' and l[x] in ('Y', 'N'): |
||||
cnt += 1 |
||||
return cnt |
||||
|
||||
|
||||
def middleman(ls, rs): |
||||
if not len(ls): |
||||
return ls |
||||
result = [] |
||||
for lo in ls: |
||||
data = lo[:] |
||||
for ro in rs: |
||||
sim_count = get_similarity_count(lo[:], ro) |
||||
data.append(sim_count) |
||||
result.append(data) |
||||
return result |
||||
|
||||
|
||||
def main(): |
||||
for m in MODEL_LIST: |
||||
l_list, lo_data = get_test_data(m) |
||||
for i in '1234': |
||||
ros = get_ro_data(m, i) |
||||
result = middleman(lo_data, ros) |
||||
output_name = '%s-%s.csv' % (m, i) |
||||
create_csv(output_name, result, directory='part8') |
||||
|
||||
main() |
Loading…
Reference in new issue