Skip to content

Instantly share code, notes, and snippets.

@peace098beat
Created December 2, 2015 13:47
Show Gist options
  • Save peace098beat/fcfa02bb366b06135c42 to your computer and use it in GitHub Desktop.
Save peace098beat/fcfa02bb366b06135c42 to your computer and use it in GitHub Desktop.
[一対比較評価] ver0.1たたき台を作成
#! coding:utf-8
"""
paired_comparison.py
一対比較評価
リーグ勝敗表を英語に訳すと league standing; game standing
順位表を英語に訳すと ranking table
組み合わせ表 pairing(対戦の)table of combination
(2015/12/02) たたき台を作成
Created by fifi (2015/12/02 21:11)
"""
__version__ = '0.1'
import os
import sys
import glob
from logging import getLogger, StreamHandler, DEBUG, FileHandler
import warnings
from mod.AudioManager import AudioManager
logger = getLogger(__name__)
handler = StreamHandler()
handler = FileHandler(filename='a.txt', mode='w')
handler.setLevel(DEBUG)
logger.setLevel(DEBUG)
logger.addHandler(handler)
logger.debug('paired_comparison')
logger.debug('version :%s', __version__)
class PairedComparison(object):
"""
一対比較評価クラス
"""
RIGHT = 1
LEFT = 0
WIN_POINT = 1
LOSE_POINT = -1
DRAW_POINT = 0
def __init__(self):
# 比較ファイル関連
self.dir = None
self.wav_filepath_s = []
self.target_number = [-1, -1] # target_number[RIGHT]
self.result_table = []
self.pairing_table = []
self.turn = 0 # 順番管理 [0, N-1]
self.sample_num = -1
pass
def set_dir(self, dir=None):
self.dir = dir
# フォルダの指定
search_path = os.path.join(dir, '*4.wav')
self.wav_filepath_s = glob.glob(search_path)
# 設定値
self.sample_num = len(self.wav_filepath_s)
for f in self.wav_filepath_s: logger.debug('files:%s', f)
logger.debug('Total File Number : %d', self.sample_num)
def make_table(self):
# 対戦表の作成
for i in range(self.sample_num):
for j in range(i + 1, self.sample_num):
self.pairing_table.append((i, j))
logger.debug((i, j))
self.pairing_table_num = len(self.pairing_table)
logger.debug('make pairing_table : number is %d', len(self.pairing_table))
logger.debug('Check! pairing_table number: n*(n-1)/2 : %d', self.sample_num * (self.sample_num - 1) / 2)
assert len(self.pairing_table) == self.sample_num * (self.sample_num - 1) / 2
# 勝敗テーブルの作成
self.result_table = [[0 for i in range(self.sample_num)] for j in range(self.sample_num)]
pass
def get_pair(self, index=None):
pair = self.pairing_table[index]
p = {'index': index, 'left': pair[self.LEFT], 'right': pair[self.RIGHT]}
return p
def set_issue(self, index=None, win=None):
pair = self.pairing_table[index]
left = pair[self.LEFT]
right = pair[self.RIGHT]
if win is 'left':
self.result_table[left][right] = self.WIN_POINT
self.result_table[right][left] = self.LOSE_POINT
elif win is 'right':
self.result_table[left][right] = self.LOSE_POINT
self.result_table[right][left] = self.WIN_POINT
elif win is 'draw':
self.result_table[left][right] = self.DRAW_POINT
self.result_table[right][left] = self.DRAW_POINT
else:
logger.debug('win is %s. win is [left, right, draw] only ', win)
warnings.warn('win is None. win is [left, right, draw] only ')
for i in range(self.sample_num):
logger.debug(self.result_table[i])
def main():
# クラス作成
pair_com = PairedComparison()
# フォルダの指定
wav_dir = os.path.normpath(os.path.join(os.path.dirname(sys.argv[0]), './wav'))
search_path = os.path.join(wav_dir, '*.wav')
wav_filepath_s = glob.glob(search_path)
data_num = len(wav_filepath_s)
pair_com.set_dir(dir=wav_dir)
pair_com.make_table()
for index in range(pair_com.pairing_table_num):
pair = pair_com.get_pair(index)
logger.debug(pair)
if pair['left'] > pair['right']:
pair_com.set_issue(index=index, win='left')
elif pair['left'] == pair['right']:
pair_com.set_issue(index=index, win='draw')
else:
pair_com.set_issue(index=index, win='right')
# AudioManager(filepath=pair_com.wav_filepath_s[index]).play()
# am = AudioManager(filepath=wav_filepath_s[0])
# am.play()
# 作業開始
# 1回目
pass
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment