from subprocess import (check_output,call) import os def split(params): devnull = open(os.devnull, 'w') call(["./split"]+params.split(" "),stdout=devnull) def train(params): params+=" --iter 1 --cg_prec 1e-4 --ls_prec 1e-10 --prec 1e-4" bare(params) def bare(params): devnull = open(os.devnull, 'w') call(["./ranksvm"]+params.split(" "),stdout=devnull) def cmc(params): devnull = open(os.devnull, 'w') retcode = check_output(["./ranksvm"]+params.split(" ")).decode('ascii').split('\n'); return float(retcode[-2]) def take(fname): f=open(fname,'r') res=f.read().split('\n') f.close() return res def merge(a,b): return a[:-1]+b[1:] def put(fname,a): f=open(fname,'w') for item in a: f.write("%s\n" % item) f.close() def getmodel(fname): f=open(fname,'r') res=f.read().split('\n') f.close() mod=[]; fsize=int(res[1]); for i in range(fsize): mod.append(float(res[3+i])) return mod; def putmodel(fname,m): f=open(fname,'w') f.write("TN\n") f.write("%d\n" % len(m)) f.write("%d 1\n"%len(m)) for a in m: f.write("%g\n"%a) f.write("0") f.close() def getpred(fname): f=open(fname,'r') res=f.read().split('\n') f.close() return [float(p) for p in res[:-1]]