Created
December 2, 2015 13:47
-
-
Save peace098beat/fcfa02bb366b06135c42 to your computer and use it in GitHub Desktop.
[一対比較評価] ver0.1たたき台を作成
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #! 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