def __init__(self): self.f1 = Feature1() self.f2 = Feature2() self.f3 = Feature3() self.f4 = Feature4() self.f5 = Feature5() self.f6 = Feature6() self.f7 = Feature7() self.f8 = Feature8() self.f9 = Feature9() self.f10 = Feature10() self.f11 = Feature11() self.features = [] self.features.append(self.f1) self.features.append(self.f2) self.features.append(self.f3) self.features.append(self.f4) self.features.append(self.f5) self.features.append(self.f6) self.features.append(self.f7) self.features.append(self.f8) self.features.append(self.f9) self.features.append(self.f10) self.features.append(self.f11) self.calculator = Calculation()
def main(): # instruction for choosing tagging service np = raw_input('choose: 1. cross validation test; 2. simple test : ') # if is not a int value, return wrong try: cmd = int(np) except ValueError: print('invalid cmd') # if is CV if cmd == 1: print('start loading all files: ' + time.strftime("%H: %M: %S")) r = ReadIN() trains, targets = r.formalizeSentences(r.formalizeDataset(r.readFile())) cv = CrossValidation(trains, targets) print('start doing cross validation: ' + time.strftime("%H: %M: %S")) mean = cv.do_cv() print 'mean CV accuracy: ', mean # if is simple sentence test else: sentence = raw_input('input your sentence: ') s_array = sentence.split() print('start loading all files: ' + time.strftime("%H: %M: %S")) r = ReadIN() trains, targets = r.formalizeSentences(r.formalizeDataset(r.readFile())) print('start counting and calculating: ' + time.strftime("%H: %M: %S")) c = Calculation(trains, targets) c.calculateProbability() print('start running viterbi: ' + time.strftime("%H: %M: %S")) t = Test(c.count_i, c.count_w, c.p_ji, c.p_wk, s_array, []) t.do_simple_test()
def OnChooseRun(self, event): # wxGlade: AccTempFrame.<event_handler> """ 計算して保存ボタンが押された :param event: :return: """ if not self.check_input_data(): # 入力されたデータをチェックする return self.get_column_names() # 各カラム名をワークシートオブジェクトに通知する try: self.calculation = Calculation(self.workbook, self.meteorological_agency, self) # 積算温度計算オブジェクトを作る self.calculation.run() # 積算温度計算実行 self.workbook.save( self.text_ctrl_output_filename.GetValue()) # 結果を保存する self.text_ctrl_message.SetValue( self.text_ctrl_output_filename.GetValue() + "に保存しました") self.last_user_input.save_user_input() # ユーザーが入力したデータを記憶する except PermissionError as e: # 書き込み禁止エラー error_text = "指定された'" + self.text_ctrl_output_filename.GetValue( ) + "'に、書き込めません。\n他のアプリケーションで開いている可能性があります。" self.text_ctrl_message.SetValue(error_text) print(e) print(type(e)) return except Exception as e: # 予期しないエラー self.error_process(e) return
def do_cv(self): # use imported sklearn library to generate # 10 section of random indexes for all the corpus kf = KFold(self.size, n_folds=10) # reset accuracy accuracy = 0 round = 0 # do for all the 10 set of corpus for train_index, test_index in kf: round += 1 train_word = [] train_tag = [] test_word = [] test_tag = [] # formalize them into training set for i in train_index: train_word.append(self.trains[i]) train_tag.append(self.targets[i]) # formalize them into test set for i in test_index: test_word.append(self.trains[i]) test_tag.append(self.targets[i]) # do calculation print('start counting and calculating: ' + time.strftime("%H: %M: %S")) c = Calculation(train_word, train_tag) c.calculateProbability() # run test for test sets print 'start running viterbi on', len(test_word), 'tests: ' + time.strftime("%H: %M: %S") t = Test(c.count_i, c.count_w, c.p_ji, c.p_wk, test_word, test_tag) a = t.do_cv_test() print round, '/ 10 CV accuracy: ', a accuracy += a # output the mean accuracy return accuracy / 10
def __init__(self, phone=None): super(Main, self).__init__() self.producer = Practice() # 生成题目 self.cal = Calculation() # 计算结果 self.school = {"小学": "primary", "初中": "middle", "高中": "high"} self.score = 0 # 记录分数 self.answer = None # 记录答案 self.index = 0 # 第几题 self.practices = None # 生成的题目 self.phone = phone self.file = File() # 保存试卷
def newCalculation(self): newCalculation = Calculation(self.calculateIEG(), self.getBeamList(), self.calculateNumVert()) #TODO: Get force vector from user and number of iterations from user.. newCalculation.setForceVector(self.getForceVector()) newCalculation.calculateDisplacementVector(200) print "Stivhetsmatrise:" printC(newCalculation.K) print "Forskyvningsvektor:" print newCalculation.displacementVector print "Belastningsvektor:" print newCalculation.forceVector
def newCalculation(self): newCalculation = Calculation(self.calculateIEG(), self.getBeamList(), self.calculateNumVert()) #TODO: Get force vector from user adn number of iterations from user.. newCalculation.setForceVector(self.getForceVector()) newCalculation.calculateDisplacementVector(200) print "Stivhetsmatrise:" printC(newCalculation.K) print "Forskyvningsvektor:" print newCalculation.displacementVector print "Belastningsvektor:" print newCalculation.forceVector
beam2.setPhysicalProperties(1, 1, 1) beamList = [beam1, beam2] IEG = [[0, 1], [1, 2]] numVert = 3 actualK = [ [1, 0, 0, -1, 0, 0, 0, 0, 0], [0, 12, -6, 0, -12, -6, 0, 0, 0], [0, -6, 4, 0, 6, 2, 0, 0, 0], [-1, 0, 0, 2, 0, 0, -1, 0, 0], [0, -12, 6, 0, 24, 0, 0, -12, -6], [0, -6, 2, 0, 0, 8, 0, 6, 2], [0, 0, 0, -1, 0, 0, 1, 0, 0], [0, 0, 0, 0, -12, 6, 0, 12, 6], [0, 0, 0, 0, -6, 2, 0, 6, 4] ] testCalculation = Calculation(IEG, beamList, numVert) #Tests def initTest(): global actualK global testCalculation return assertEqual(testCalculation.K, actualK) def setForceVectorTest(): global testCalculation actualForceVector = [0, 1, 0, 0, 1, 0, 0, 1, 0] testCalculation.setForceVector(actualForceVector) return assertEqual(testCalculation.forceVector, actualForceVector) def calculateDisplacementVectorTest(): global testCalculation
class AccTempGui(AccTempFrame): """ メインクラス wxGladeで作成されたAccTempFrameクラスを継承(wxglade_out.py)し、 wxglade_out.pyは直接編集しなくても良いようにする """ def __init__(self, *args, **kwargs): """ 画面の初期状態を作成する :param args: :param kwargs: """ super(AccTempGui, self).__init__(*args, **kwargs) self.meteorological_agency = MeteorologicalAgency() prefecture_list = self.meteorological_agency.get_prefecture_list() self.combo_box_prefecture.SetItems(prefecture_list) self.workbook = None self.calculation = None self.last_user_input = LastUserInput(self) title = self.GetTitle() title += " Version: " + __version__ self.SetTitle(title) def onInputFileEnter(self, event): # wxGlade: AccTempFrame.<event_handler> """ 入力ファイルが指定された時の処理 :param event: :return: """ filename = self.text_ctrl_input_filename.GetValue() # 入力ファイル名を取得 try: self.workbook = ATWorkBook(filename) # EXCELファイルとして読み込む self.workbook.target_sheet_all() # シート名一覧を得るためにすべてのシートを処理対象にする sheet_name_list = self.workbook.sheets_name_list # シート名リストを得る self.check_list_box_target_sheet_name.SetItems( sheet_name_list) # シート名選択コントロールにシート名リストをセット text = filename + "を読み込みました" self.text_ctrl_message.SetValue(text) self.last_user_input.load_user_input() # 前回のユーザー入力を復元する except openpyxl.utils.exceptions.InvalidFileException as e: # 不正なファイルが指定された場合 error_text = "指定された'" + filename + "'は、EXCELファイルではありません" self.text_ctrl_message.SetValue(error_text) print(e) print(type(e)) # ログ用 return except FileNotFoundError as e: # 指定されたファイルが存在しない場合 error_text = "指定された'" + filename + "'は、存在しません" self.text_ctrl_message.SetValue(error_text) # メッセージ表示欄に表示 print(e) print(type(e)) # ログ用 return except Exception as e: # 予期していないエラー self.error_process(e) # 予期していないエラーの処理 return def OnChooseInputFile(self, event): # wxGlade: AccTempFrame.<event_handler> """ 入力ファイルボタンが押された :param event: :return: """ style = wx.FD_DEFAULT_STYLE | wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_CHANGE_DIR # 読み込み用のファイル選択ダイアログのモード指定 pathname = self.showFileDialog(style) # 読み込み用のファイル選択ダイアログを表示 if pathname is None: return # 何も選択されていない self.text_ctrl_input_filename.SetValue(pathname) # ファイル名を取得 print("input file is " + pathname) # ログ用 self.onInputFileEnter(event) # 入力ファイルが指定された時の処理 def OnChooseOutputFile(self, event): # wxGlade: AccTempFrame.<event_handler> """ 出力ファイルボタンが押された :param event: :return: """ style = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT | wx.FD_CHANGE_DIR # 書き込み用のファイル選択ダイアログのモード指定 pathname = self.showFileDialog(style) # 書き込み用のファイル選択ダイアログを表示 if pathname is None: return # 何も指定されていない self.text_ctrl_output_filename.SetValue(pathname) # 指定されたファイル名を表示 print("output file is " + pathname) # ログ用 def onPrefectureSelected(self, event): # wxGlade: AccTempFrame.<event_handler> """ 県が選択された :param event: :return: """ selected = self.combo_box_prefecture.GetStringSelection() # 選択された県名を得る print("onPrefectureSelected:" + selected) self.meteorological_agency.set_prefecture(selected) # 気象庁オブジェクトに通知 selection_list = self.meteorological_agency.get_station_list( ) # 地点リストを得る self.combo_box_station.SetItems(selection_list) # 地点の選択リストに地点リストを設定 if self.combo_box_station.GetStringSelection() == "": # デバッグ時の確認用 print("Station:指定されてない") else: print("Station:[[" + self.combo_box_station.GetStringSelection() + "]]") def onStationSelected(self, event): # wxGlade: AccTempFrame.<event_handler> """ 地点が選択された :param event: :return: """ selected = self.combo_box_station.GetStringSelection() # 選択された地点名を得る print("onStationSelected:" + selected) self.meteorological_agency.set_station(selected) # 気象庁オブジェクトに通知 def onTargetSheetSelected(self, event): # wxGlade: AccTempFrame.<event_handler> """ 対象となるシートリストが選択された :param event: :return: """ self.set_column_name_list() # カラム名の選択リストをコンボボックスにセットする def onColumnNameSelected(self, event): # wxGlade: AccTempFrame.<event_handler> """ 各カラム名が選択された時の処理 最初は、選択されるたびに、他のコンボボックスから候補を減らしていこうと思ったのだけど それやり始めたら、とても面倒だという気持ちになったので、ここでは何もしない。 :param event: :return: """ selected_combo_box = event.EventObject # 変更されたコンボボックスを得る column_name = selected_combo_box.GetStringSelection() # 指定された値を得る print(column_name) def onTitleLineNoChanged(self, event): # wxGlade: AccTempFrame.<event_handler> """ カラム名の行番号が変更された :param event: :return: """ self.set_column_name_list() # カラム名の選択リストをコンボボックスにセットする def OnChooseExit(self, event): # wxGlade: AccTempFrame.<event_handler> """ 終了ボタンが押された :param event: :return: """ self.Destroy() # アプリから抜ける def showFileDialog(self, style): """ ファイル選択ダイアログを表示する :param style: wx.FileDialogへのパラメータ https://wxpython.org/Phoenix/docs/html/wx.FileDialog.html :return: 指定されたファイルパス名(キャンセル時はNone) """ with wx.FileDialog(self, 'ファイルを選択してください', style=style) as dialog: if dialog.ShowModal() == wx.ID_CANCEL: return None # キャンセルボタンが押されたらNoneで返る return dialog.GetPath() # 指定されたファイルパス名を返す def set_prefecture_list(self, prefecture_list): """ 県名リストを表示する :param prefecture_list: 県名リスト :return: """ self.combo_box_prefecture.SetItems(prefecture_list) def set_column_name_list(self): """ カラム名を指定するコンボボックスのリストを設定 :return: """ if self.workbook is None: # 入力ファイルが指定されていない時(無いはず) print("入力Fileが指定されていない") error_text = "入力ファイルが指定されていません" self.text_ctrl_message.SetValue(error_text) return sheet_name_list = self.check_list_box_target_sheet_name.GetCheckedStrings( ) # 読み込んだファイルのシート一覧を得る if len(sheet_name_list) == 0: print("No Sheet Name") return # シート名が入力されていない line_no = self.spin_ctrl_title_line_no.GetValue() # タイトル行の行番号を得る if line_no <= 0: print("No Line No.") return # 行番号が入力されていない self.workbook.set_target_sheets_by_name_list( sheet_name_list) # 対象となるシートの一覧を指定する print(sheet_name_list) print(self.workbook.sheets_list) # カラム名の一覧を得る column_data_list = self.workbook.get_row_data_string( line_no) # 指定したシート上の指定した行番号の各セルをテキストデータとして得る column_data = set() # 名前の重複を省くためset型変数に格納する for row in column_data_list: # 取得したテキストデータ分 column_data |= set(row) # 重複しないように、和集合でセットする column_data = list(sorted(column_data)) # あとあとsetだと使いにくいので、ソートシタリストに変換 print(column_data) # それぞれのコンボボックスに設定する self.combo_box_start_date.SetItems(column_data) # 開始日は必須 column_data.insert(0, "--使用しない--") self.combo_box_end_date.SetItems(column_data) # それ以外は使用しない事が選択可能 self.combo_box_target_temperature.SetItems(column_data) self.combo_box_current_temperature.SetItems(column_data) self.combo_box_rate.SetItems(column_data) self.combo_box_estimate_date.SetItems(column_data) self.combo_box_end_date.SetSelection(0) # 初期状態として "--使用しない--"を表示 self.combo_box_target_temperature.SetSelection(0) self.combo_box_current_temperature.SetSelection(0) self.combo_box_rate.SetSelection(0) self.combo_box_estimate_date.SetSelection(0) def check_input_data(self): """ 入力データをチェック :return: True=妥当 False=誤り """ error_text = '' # 誤りにした要因を格納する変数 if self.workbook is None: error_text += " 入力ファイルが指定されていません\n" if self.combo_box_prefecture.GetStringSelection() == "": error_text += " 県が指定されていません\n" if self.combo_box_station.GetStringSelection() == "": error_text += " 地点が指定されていません\n" if self.spin_ctrl_title_line_no.GetValue() <= 0: error_text += " タイトルの行番号が指定されていません\n" if len(self.check_list_box_target_sheet_name.GetCheckedStrings()) == 0: error_text += " 対象となるシート名が指定されていません\n" if self.combo_box_start_date.GetStringSelection() == '': error_text += " 積算温度起算日のカラムが指定されていません\n" if self.text_ctrl_output_filename.GetValue() == "": error_text += " 出力ファイル名が指定されていません\n" if len(error_text) > 0: # いずれかの誤りがあった error_text = "入力内容が正しくありません\n" + error_text self.text_ctrl_message.SetValue(error_text) # エラーメッセージを表示 return False else: # 入力データは問題ない self.text_ctrl_message.SetValue("") # メッセージ欄をクリア print("Start") return True def get_combo_string(self, combo_box): """ コンボボックスの内容を得る :param combo_box: 取得するコンボボックス :return: コンボボックス値("--使用しない--"が選択されている時はNone) """ combo_string = combo_box.GetStringSelection() if combo_string == "--使用しない--": combo_string = None return combo_string def get_column_names(self): """ ユーザーが入力した、各カラム名を得る :return: """ self.workbook.set_target_work_sheet( self.check_list_box_target_sheet_name.GetCheckedStrings()) # 対象とするシートを、ユーザーが指定したシートにする line_no = self.spin_ctrl_title_line_no.GetValue() # タイトル行番号を得る start_date = self.combo_box_start_date.GetStringSelection( ) # 開始日を取得するカラム名を得る end_date = self.get_combo_string( self.combo_box_end_date) # 終了日を取得するカラム名を得る target_temperature = self.get_combo_string( self.combo_box_target_temperature) # 目標積算温度を取得するカラム名を得る current_temperature = self.get_combo_string( self.combo_box_current_temperature) # 現状積算温度を格納するカラム名を得る rate = self.get_combo_string(self.combo_box_rate) # 到達率を格納するカラム名を得る estimate_date = self.get_combo_string( self.combo_box_estimate_date) # 予測終了日を格納するカラム名を得る self.workbook.set_column_position_string( line_no, start_date, end_date, target_temperature, current_temperature, rate, estimate_date) # それぞれのカラム名を通知する def message(self, text): """ メッセージ表示欄にテキストを出力する :param text: 出力するテキスト :return: """ self.text_ctrl_message.SetValue(text) def OnChooseRun(self, event): # wxGlade: AccTempFrame.<event_handler> """ 計算して保存ボタンが押された :param event: :return: """ if not self.check_input_data(): # 入力されたデータをチェックする return self.get_column_names() # 各カラム名をワークシートオブジェクトに通知する try: self.calculation = Calculation(self.workbook, self.meteorological_agency, self) # 積算温度計算オブジェクトを作る self.calculation.run() # 積算温度計算実行 self.workbook.save( self.text_ctrl_output_filename.GetValue()) # 結果を保存する self.text_ctrl_message.SetValue( self.text_ctrl_output_filename.GetValue() + "に保存しました") self.last_user_input.save_user_input() # ユーザーが入力したデータを記憶する except PermissionError as e: # 書き込み禁止エラー error_text = "指定された'" + self.text_ctrl_output_filename.GetValue( ) + "'に、書き込めません。\n他のアプリケーションで開いている可能性があります。" self.text_ctrl_message.SetValue(error_text) print(e) print(type(e)) return except Exception as e: # 予期しないエラー self.error_process(e) return def error_process(self, e): """ 予期しない例外が発生した時の処理 :param e: :return: """ print(e) print(type(e)) print(traceback.format_exc()) error_text = "Error: type:{0} : {1}\n".format( type(e), e) + traceback.format_exc() self.text_ctrl_message.SetValue(error_text)
def __init__(self, person, today_date, invest): Calculation.__init__(self, person, today_date, invest) self._invest = invest
from Calculation import Calculation from SourceData import SourceData from OpticalElementData import OpticalElementData from Settings import Settings sd = SourceData() sd.source_samplingarea = [400e-9, 720e-9] #400 to 720 nm oe = OpticalElementData() se = Settings() calc = Calculation(sd, oe, se) calc.Calculation() calc.Plot_All_SaveAll()
def setUpClass(cls): user = '******' cls.lib = Calculation() cls.lib.connect(user)
class TreeBuilder: def __init__(self): self.f1 = Feature1() self.f2 = Feature2() self.f3 = Feature3() self.f4 = Feature4() self.f5 = Feature5() self.f6 = Feature6() self.f7 = Feature7() self.f8 = Feature8() self.f9 = Feature9() self.f10 = Feature10() self.f11 = Feature11() self.features = [] self.features.append(self.f1) self.features.append(self.f2) self.features.append(self.f3) self.features.append(self.f4) self.features.append(self.f5) self.features.append(self.f6) self.features.append(self.f7) self.features.append(self.f8) self.features.append(self.f9) self.features.append(self.f10) self.features.append(self.f11) self.calculator = Calculation() def induce_tree(self, current_node, subset): information_gain_per_feature = [] entropy_for_set = self.calculator.get_total_entropy(subset) index_of_largest_info_gain = 0 largest_info_gain = 0 subset_negative_for_feature = [] subset_positive_for_feature = [] if entropy_for_set == 0: current_node.is_leaf = True current_node.candidate_emails = subset if len(subset) != 0: current_node.classification = subset[0].classification return for feature in self.features: information_gain_per_feature.append( self.calculator.get_info_gain_for_feature( subset, feature, entropy_for_set)) for x in range(0, 11): if information_gain_per_feature[x] > largest_info_gain: largest_info_gain = information_gain_per_feature[x] index_of_largest_info_gain = x current_node.feature = self.features[index_of_largest_info_gain] new_left_child = TreeNode() new_right_child = TreeNode() current_node.left_child = new_left_child current_node.right_child = new_right_child for candidate_email in subset: if current_node.feature.check_for_feature(candidate_email) == True: subset_positive_for_feature.append(candidate_email) else: subset_negative_for_feature.append(candidate_email) self.induce_tree(current_node.left_child, subset_negative_for_feature) self.induce_tree(current_node.right_child, subset_positive_for_feature)
import os from Config import * from Stats import Model, Estimation, Test from Calculation import Calculation from Utils import CoordUtils, PlyUtils if __name__ == '__main__': calc = Calculation() cu = CoordUtils() est = Estimation(model=Model().get_model(), thu=0.75, thd=0.45) for f in os.listdir(DATA_SOURCE_PATH): if f.endswith('.png'): est.clear_label() tag_mat = est.get_shadows_label_tag(filename=f) BS = calc.detect_boundary(fname=f, r_neigh=1.2, b0=0.2, xita_crease=45) for p3 in BS: x3 = p3[0] y3 = p3[1] (x, y) = cu.trans3d_2d(x3, y3) tag_mat[x, y] = 2 # boundary: 2 # teson = Test(tag_mat) # teson.draw() # break
class Main(object): """docstring for Main""" def __init__(self, phone=None): super(Main, self).__init__() self.producer = Practice() # 生成题目 self.cal = Calculation() # 计算结果 self.school = {"小学": "primary", "初中": "middle", "高中": "high"} self.score = 0 # 记录分数 self.answer = None # 记录答案 self.index = 0 # 第几题 self.practices = None # 生成的题目 self.phone = phone self.file = File() # 保存试卷 # 题目展示 def display(self): self.window = tk.Tk() self.window.title("题目展示") # 生成题目模块 self.head = Frame(self.window) self.head.pack() ttk.Label(self.head, text='Enter a Count:').grid(column=0, row=0) # Adding a Textbox Entry widget self.count = tk.StringVar() count_entered = ttk.Entry(self.head, width=12, textvariable=self.count) count_entered.grid(column=0, row=1) # column 0 # Adding a Button self.action = ttk.Button(self.head, text="生成试卷", command=self.creatPractices) self.action.grid(column=2, row=1) # change column to 2 ttk.Label(self.head, text='Choose a Mold:').grid(column=1, row=0) # 模式选择 self.mold = tk.StringVar() mold_chosen = ttk.Combobox(self.head, width=12, textvariable=self.mold) mold_chosen['values'] = ("小学", "初中", "高中") mold_chosen.grid(column=1, row=1) # Combobox in column 1 mold_chosen.current(0) # 题目展示模块 self.middle = Frame(self.window, width=200) # self.middle.pack_propagate(0) self.middle.pack() # self.practice = StringVar() # 显示题目 self.show_label = Label(self.middle, text="这里是题目....", font=("Arial", 15), height=3) self.show_label.pack() # 显示答案 self.radio = Frame(self.middle) self.radio.pack() self.input_answer = tk.StringVar() self.rad_A = tk.Radiobutton(self.radio, text="A", variable=self.input_answer, value="A", command=radCall) self.rad_A.grid(column=0, row=0) self.rad_B = tk.Radiobutton(self.radio, text="B", variable=self.input_answer, value="B", command=radCall) self.rad_B.grid(column=1, row=0) self.rad_C = tk.Radiobutton(self.radio, text="C", variable=self.input_answer, value="C", command=radCall) self.rad_C.grid(column=2, row=0) self.rad_D = tk.Radiobutton(self.radio, text="D", variable=self.input_answer, value="D", command=radCall) self.rad_D.grid(column=3, row=0) self.submit = Button(self.window, text="提交", width=40, command=self.submitCommand, state=DISABLED) self.submit.pack() # Start GUI self.window.mainloop() # 生成试卷按钮的处理函数 def creatPractices(self): count = self.count.get() mold = self.mold.get() if count == "" or int(count) < 0: self.showinfo("生成题目", "请输入正确的题目数量") return self.practices = self.producer.produce(mold=self.school[mold], count=int(count)) self.showinfo("生成题目", "生成题目成功") self.action.configure(state=DISABLED) # 设置生成试卷按钮不可点 self.submit.configure(state=NORMAL) # 设置生成提交按钮可点 # 重新设置 self.index = 0 self.score = 0 # 处理题目显示 practice = self.practices[0] answer = self.cal.expression_to_value(string=self.practices[0]) self.practices[0] = "1:" + self.practices[0] + " = " + str(answer) self.setChoice(practice=practice, answer=answer) def submitCommand(self): input_answer = self.input_answer.get() if input_answer == self.answer: self.score = self.score + 1 if self.index == int(self.count.get()): # 答题结束,显示分数 self.show_label.configure(text="score:" + str(self.score) + "/" + self.count.get(), font=("Arial", 18), fg='red') self.action.configure(state=NORMAL) # 设置生成试卷按钮可点 self.submit.configure(state=DISABLED) # 设置生成提交按钮不可点 self.file.write(self.phone, self.practices) # 保存题目 return practice = self.practices[self.index] answer = self.cal.expression_to_value( string=self.practices[self.index]) self.practices[self.index] = str( self.index + 1) + ":" + self.practices[self.index] + " = " + str( answer) # 添加答案 self.setChoice(practice=practice, answer=answer) # 设置选项和题目 def setChoice(self, practice, answer): practice = str(self.index + 1) + ": " + practice + "=" self.index = self.index + 1 # index+1 self.show_label.configure(text=practice, fg='black') num = random.randint(0, 3) ans = ['A', 'B', 'C', 'D'] self.answer = ans[num] # 设置答案 answers = [answer * -1, answer + 1, answer - 1] # 其他的三个答案 j = 0 l = [self.rad_A, self.rad_B, self.rad_C, self.rad_D] for i in range(0, 4): if i == num: l[i].configure(text=answer, font=("Arial", 12)) continue l[i].configure(text=answers[j], font=("Arial", 12)) j = j + 1 # 提示框 def showinfo(self, title="", message=""): showinfo(title, message)
def player2B(): global turnB global boolA global boolB global bullsA global score60A global score180A global bullsB global score60B global score180B global countB180 p2 = Calculation() if "player2" in session: player2 = session["player2"] if "player1" in session: player1 = session["player1"] cur = mysql.connection.cursor() cur.execute("SELECT name FROM player where id=%s", (player2, )) nameB = cur.fetchone() cur.execute("SELECT score FROM score WHERE id = %s", (player2, )) scoreB = cur.fetchone() # for fetching all the infos from playerA cur.execute("SELECT * FROM scorecard where id=%s", (player1, )) infoA = cur.fetchone() # for fetching all the infos from playerB cur.execute("SELECT * FROM scorecard where id=%s", (player2, )) infoB = cur.fetchone() if request.method == 'POST': score2 = request.form.get("sc2") # for maintaining the sequence who will do his first 3 turns if turnB < 0: turnB = int( request.form.get("turnB") ) # or we can write here direct 3 instead of this request form boolA = False # for calculating scores of bulls. 60 and 180 of playerB if int(score2) == 50: bullsB += 1 if int(score2) == 60: score60B += 1 countB180 += 1 if countB180 == 3: score180B += 1 result, boolType = p2.playerB(int(scoreB[0]), int(score2)) # for maintaining the sequence who will do his first 3 turns if turnB > 0 and boolType: turnB -= 1 boolA = False if turnB == 0 and boolType: boolB = False boolA = True turnB = -1 countB180 = 0 if isinstance(result, str): flash(result, "danger") return redirect(url_for("score")) if result > 0: cur.execute("UPDATE score SET score = %s WHERE id = %s", (result, player2)) mysql.connection.commit() else: cur.execute("UPDATE score SET score = %s WHERE id = %s", (501, player2)) mysql.connection.commit() cur.execute("UPDATE score SET score = %s WHERE id = %s", (501, player1)) mysql.connection.commit() winRateA = round((int(infoA[2]) / (int(infoA[1]) + 1)) * 100, 2) winRateB = round(((int(infoB[2]) + 1) / (int(infoB[1]) + 1)) * 100, 2) # for updating infos for winning in scorecard of playerA cur.execute( "UPDATE scorecard SET played = %s, win = %s, winRate = %s, bulls = %s, score60 = %s, score180 = %s WHERE id = %s", (int(infoB[1]) + 1, int(infoB[2]) + 1, winRateB, int(infoB[5]) + bullsB, int(infoB[6]) + score60B, int(infoB[7]) + score180B, player2)) mysql.connection.commit() # for updating infos for losing in scorecard of playerA cur.execute( "UPDATE scorecard SET played = %s, loss = %s, winRate = %s, bulls = %s, score60 = %s, score180 = %s WHERE id = %s", (int(infoA[1]) + 1, int(infoA[3]) + 1, winRateA, int(infoA[5]) + bullsA, int(infoA[6]) + score60A, int(infoA[7]) + score180A, player1)) mysql.connection.commit() flash("Congratulations {0}!!! You win!!!".format(nameB[0])) cur.close() return redirect(url_for("info")) cur.close() return redirect(url_for("score")) cur.close() return redirect(url_for("score"))
def score(): #global str1 #global str2 #global str3 # to maintain whose recommend call it is #bool1 = False #bool2 = False p1 = Calculation() # object creation for Calculation class if "player1" in session: player1 = session["player1"] if "player2" in session: player2 = session["player2"] cur = mysql.connection.cursor() cur.execute("SELECT name FROM player WHERE id = %s", (player1, )) p1name = cur.fetchone() cur.execute("SELECT name FROM player WHERE id = %s", (player2, )) p2name = cur.fetchone() cur.execute("SELECT score FROM score WHERE id = %s", (player1, )) scoreA = cur.fetchone() cur.execute("SELECT score FROM score WHERE id = %s", (player2, )) scoreB = cur.fetchone() cur.close() """ # for recommended turns for Player1(for 3 shots) if turnA == -1: if ((int(scoreA[0]) <= 180) and (int(scoreA[0]) >= 101)): str1, str2, str3 = p1.recommend_func(int(scoreA[0])) bool1 = True # for recommended turns for Player1(for 2 shots) if turnA == 2: if ((int(scoreA[0]) <= 120) and (int(scoreA[0]) >= 1)): str1, str2, str3 = p1.recommend_func2(int(scoreA[0])) bool1 = True # for recommended turns for Player1(for single shot) if turnA == 1: if ((int(scoreA[0]) <= 60) and (int(scoreA[0]) >= 1)): str1, str2, str3 = p1.recommend_func3(int(scoreA[0])) bool1 = True # for recommended turns for Player2(for 3 shots) if turnB == -1: if ((int(scoreB[0]) <= 180) and (int(scoreB[0]) >= 101)): str1, str2, str3 = p1.recommend_func(int(scoreB[0])) bool2 = True # for recommended turns for Player2(for 2 shots) if turnB == 2: if ((int(scoreB[0]) <= 120) and (int(scoreB[0]) >= 1)): str1, str2, str3 = p1.recommend_func2(int(scoreB[0])) bool2 = True # for recommended turns for Player2(for single shot) if turnB == 1: if ((int(scoreB[0]) <= 60) and (int(scoreB[0]) >= 1)): str1, str2, str3 = p1.recommend_func3(int(scoreB[0])) bool2 = True """ #when use recommend function then use the given parameters in below template (str1=str1, str2=str2, str3=str3, bool1=bool1, bool2=bool2) return render_template("score.html", p1name=p1name[0], p2name=p2name[0], scoreA=scoreA[0], scoreB=scoreB[0], boolA=boolA, boolB=boolB)
from DecisionTree import DecisionTree from FileParser import FileParser from TreeBuilder import TreeBuilder from TreeNode import TreeNode from Calculation import Calculation import random file_parser = FileParser("headers_clean.dat", "decision_tree.dat") calculator = Calculation() all_emails = file_parser.read_file() phishing_emails = [] nonphishing_emails = [] training_set = [] classification_set = [] coinflip = 0 for email in all_emails: email.classification = calculator.classify(email) if email.classification == "phishing": phishing_emails.append(email) else: nonphishing_emails.append(email) for email in nonphishing_emails: coinflip = random.randint(0, 1) if coinflip == 1: training_set.append(email) else: classification_set.append(email)
import random import sys from Centroid import Centroid from FileParser import FileParser from Calculation import Calculation # This will be an implementation of a variation on the KMeans clustering algorithm # 1. Randomly select x amount of centroids # 2. Select random values for each feature within each centroid # 3. Further split each cluster (amount of clusters == amount of centroids) number_of_centroids = sys.argv[0] calculator = Calculation() file_parser = FileParser("headers_clean.dat", "cluster_definitions.dat") candidate_emails = file_parser.read_file() centroids = [] for x in number_of_centroids: centroid = Centroid() centroids.append(centroid) for candidate_email in candidate_emails: minimum_distance = 12 distance_from_centroid = 12 centroid_to_be_assigned = None candidate_email.classification = calculator.classify(candidate_email)
f1 = Feature1() f2 = Feature2() f3 = Feature3() f4 = Feature4() f5 = Feature5() f6 = Feature6() f7 = Feature7() f8 = Feature8() f9 = Feature9() f10 = Feature10() f11 = Feature11() #Calculate association rules for single features calculator = Calculation() calculator.set_support_threshold(support_threshold_single) frequency_per_feature = [] features = [] features_within_threshold = [] for x in range(0,11): if x == 0: features.append(f1) frequency_per_feature.append( calculator.calculate_frequency(f1,candidate_emails)) if x == 1: features.append(f2) frequency_per_feature.append( calculator.calculate_frequency(f2,candidate_emails))
class Ui_Dialog(object): def __init__(self): self.__mutex = QMutex() super().__init__() def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(806, 440) Dialog.setModal(False) self.input_angle_num_start = QtWidgets.QLineEdit(Dialog) self.input_angle_num_start.setGeometry(QtCore.QRect(120, 90, 113, 20)) self.input_angle_num_start.setObjectName("input_angle_num_start") self.input_rotate_angle_start = QtWidgets.QLineEdit(Dialog) self.input_rotate_angle_start.setGeometry( QtCore.QRect(120, 130, 113, 20)) self.input_rotate_angle_start.setObjectName("input_rotate_angle_start") self.input_volume_part_start = QtWidgets.QLineEdit(Dialog) self.input_volume_part_start.setGeometry( QtCore.QRect(120, 170, 113, 20)) self.input_volume_part_start.setObjectName("input_volume_part_start") self.input_degree_start = QtWidgets.QLineEdit(Dialog) self.input_degree_start.setGeometry(QtCore.QRect(140, 270, 113, 20)) self.input_degree_start.setObjectName("input_degree_start") self.input_degree_step = QtWidgets.QLineEdit(Dialog) self.input_degree_step.setGeometry(QtCore.QRect(140, 350, 113, 20)) self.input_degree_step.setObjectName("input_degree_step") self.input_degree_end = QtWidgets.QLineEdit(Dialog) self.input_degree_end.setGeometry(QtCore.QRect(140, 310, 113, 20)) self.input_degree_end.setObjectName("input_degree_end") self.input_cell_height = QtWidgets.QLineEdit(Dialog) self.input_cell_height.setGeometry(QtCore.QRect(120, 20, 113, 20)) self.input_cell_height.setObjectName("input_cell_height") self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(10, 20, 71, 20)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(10, 90, 91, 16)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(Dialog) self.label_3.setGeometry(QtCore.QRect(10, 130, 81, 20)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(Dialog) self.label_4.setGeometry(QtCore.QRect(10, 170, 111, 20)) self.label_4.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(Dialog) self.label_5.setGeometry(QtCore.QRect(120, 70, 47, 13)) self.label_5.setObjectName("label_5") self.label_6 = QtWidgets.QLabel(Dialog) self.label_6.setGeometry(QtCore.QRect(270, 70, 47, 13)) self.label_6.setObjectName("label_6") self.label_7 = QtWidgets.QLabel(Dialog) self.label_7.setGeometry(QtCore.QRect(420, 70, 47, 13)) self.label_7.setObjectName("label_7") self.input_rotate_angle_end = QtWidgets.QLineEdit(Dialog) self.input_rotate_angle_end.setGeometry(QtCore.QRect( 270, 130, 113, 20)) self.input_rotate_angle_end.setObjectName("input_rotate_angle_end") self.input_angle_num_end = QtWidgets.QLineEdit(Dialog) self.input_angle_num_end.setGeometry(QtCore.QRect(270, 90, 113, 20)) self.input_angle_num_end.setObjectName("input_angle_num_end") self.input_volume_part_end = QtWidgets.QLineEdit(Dialog) self.input_volume_part_end.setGeometry(QtCore.QRect(270, 170, 113, 20)) self.input_volume_part_end.setObjectName("input_volume_part_end") self.label_8 = QtWidgets.QLabel(Dialog) self.label_8.setGeometry(QtCore.QRect(20, 350, 111, 20)) self.label_8.setObjectName("label_8") self.label_9 = QtWidgets.QLabel(Dialog) self.label_9.setGeometry(QtCore.QRect(20, 270, 91, 16)) self.label_9.setObjectName("label_9") self.label_10 = QtWidgets.QLabel(Dialog) self.label_10.setGeometry(QtCore.QRect(20, 310, 101, 20)) self.label_10.setObjectName("label_10") self.input_volume_part_step = QtWidgets.QLineEdit(Dialog) self.input_volume_part_step.setGeometry(QtCore.QRect( 420, 170, 113, 20)) self.input_volume_part_step.setObjectName("input_volume_part_step") self.input_rotate_angle_step = QtWidgets.QLineEdit(Dialog) self.input_rotate_angle_step.setGeometry( QtCore.QRect(420, 130, 113, 20)) self.input_rotate_angle_step.setObjectName("input_rotate_angle_step") self.input_angle_num_step = QtWidgets.QLineEdit(Dialog) self.input_angle_num_step.setGeometry(QtCore.QRect(420, 90, 113, 20)) self.input_angle_num_step.setObjectName("input_angle_num_step") self.button_research = QtWidgets.QPushButton(Dialog) self.button_research.setGeometry(QtCore.QRect(270, 20, 261, 23)) self.button_research.setObjectName("button_research") self.button_research.clicked.connect(self.research) self.result_list = QtWidgets.QListWidget(Dialog) self.result_list.setGeometry(QtCore.QRect(270, 210, 511, 200)) self.result_list.setObjectName("result_list") # self.result_list.clicked.connect(self.tableClick) self.button_result = QtWidgets.QPushButton(Dialog) self.button_result.setGeometry(QtCore.QRect(20, 380, 233, 30)) self.button_result.setObjectName("button_retry") self.button_result.clicked.connect(self.retry) self.label_11 = QtWidgets.QLabel(Dialog) self.label_11.setGeometry(QtCore.QRect(620, 170, 51, 20)) self.label_11.setObjectName("label_11") self.label_12 = QtWidgets.QLabel(Dialog) self.label_12.setGeometry(QtCore.QRect(620, 130, 51, 20)) self.label_12.setObjectName("label_12") self.input_body_width = QtWidgets.QLineEdit(Dialog) self.input_body_width.setGeometry(QtCore.QRect(670, 130, 113, 20)) self.input_body_width.setObjectName("input_body_width") self.input_body_height = QtWidgets.QLineEdit(Dialog) self.input_body_height.setGeometry(QtCore.QRect(670, 170, 113, 20)) self.input_body_height.setObjectName("input_body_height") self.input_body_length = QtWidgets.QLineEdit(Dialog) self.input_body_length.setGeometry(QtCore.QRect(670, 90, 113, 20)) self.input_body_length.setObjectName("input_body_length") self.label_13 = QtWidgets.QLabel(Dialog) self.label_13.setGeometry(QtCore.QRect(620, 90, 51, 16)) self.label_13.setObjectName("label_13") self.label_14 = QtWidgets.QLabel(Dialog) self.label_14.setGeometry(QtCore.QRect(590, 20, 71, 20)) self.label_14.setObjectName("label_14") self.input_footing_length = QtWidgets.QLineEdit(Dialog) self.input_footing_length.setGeometry(QtCore.QRect(670, 20, 113, 20)) self.input_footing_length.setObjectName("input_footing_length") self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def __get_body_params(self): return BodyParameters(int(self.input_body_width.text()), int(self.input_body_length.text()), int(self.input_body_height.text()), int(self.input_footing_length.text())) def __get_calculation_context(self): return CalculationContext(int(self.input_rotate_angle_start.text()), int(self.input_rotate_angle_end.text()), int(self.input_rotate_angle_step.text()), int(self.input_angle_num_start.text()), int(self.input_angle_num_end.text()), int(self.input_angle_num_step.text()), int(self.input_volume_part_start.text()), int(self.input_volume_part_end.text()), int(self.input_volume_part_step.text()), int(self.input_degree_start.text()), int(self.input_degree_end.text()), int(self.input_degree_step.text())) def research(self): context = self.__get_calculation_context() body_params = self.__get_body_params() self.calculation = Calculation() thread.start_new_thread(self.calculation.calculate, (body_params, context, self.result_list)) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.input_angle_num_start.setText(_translate("Dialog", "3")) self.input_rotate_angle_start.setText(_translate("Dialog", "0")) self.input_volume_part_start.setText(_translate("Dialog", "10")) self.input_degree_start.setText(_translate("Dialog", "3")) self.input_degree_step.setText(_translate("Dialog", "1")) self.input_degree_end.setText(_translate("Dialog", "5")) self.input_cell_height.setText(_translate("Dialog", "30")) self.label.setText(_translate("Dialog", "Высота ячейи")) self.label_2.setText(_translate("Dialog", "Количество углов")) self.label_3.setText(_translate("Dialog", "Угол поворота")) self.label_4.setText(_translate("Dialog", "Часть от объёма (%)")) self.label_5.setText(_translate("Dialog", "Начало")) self.label_6.setText(_translate("Dialog", "Конец")) self.label_7.setText(_translate("Dialog", "Шаг")) self.input_rotate_angle_end.setText(_translate("Dialog", "0")) self.input_angle_num_end.setText(_translate("Dialog", "5")) self.input_volume_part_end.setText(_translate("Dialog", "30")) self.label_8.setText(_translate("Dialog", "Шаг")) self.label_9.setText(_translate("Dialog", "Началья степень")) self.label_10.setText(_translate("Dialog", "Конечная степень")) self.input_volume_part_step.setText(_translate("Dialog", "5")) self.input_rotate_angle_step.setText(_translate("Dialog", "1")) self.input_angle_num_step.setText(_translate("Dialog", "1")) self.button_research.setText(_translate("Dialog", "Исследовать")) self.button_result.setText(_translate("Dialog", "Результат")) self.label_11.setText(_translate("Dialog", "Высота")) self.label_12.setText(_translate("Dialog", "Ширина")) self.input_body_width.setText(_translate("Dialog", "20")) self.input_body_height.setText(_translate("Dialog", "30")) self.input_body_length.setText(_translate("Dialog", "20")) self.label_13.setText(_translate("Dialog", "Длина")) self.label_14.setText(_translate("Dialog", "Длина опоры")) def tableClick(self): item = self.result_list.selectedItems()[0] self.button_result.setEnabled( self.calculation.is_retry_successful(item.text())) def retry(self): if len(self.result_list.selectedItems()) == 1: print("\n\n\n\n\n\n00000000000000000000000000000000") item = self.result_list.selectedItems()[0] # self.__mutex.lock() print("\n\n\n\n\n\n11111111111111111111111111111111") self.calculation.show_result(item)
flag = random.randint(0, 1) if flag == 1 and string[j] in self.operation['primary']: # string = string[:j+1] + "(" + string[j+1:] for y in range(j + 1, len(string)): # 找到下一个基本运算符 if string[y] in self.operation['primary']: break n = random.randint(y + 1, len(string)) for z in range(n, len(string)): if string[z] in self.operation['primary']: # 一起加括号 l = len(string) string = string[:j + 1] + " (" + string[j + 1:] z = len(string) - l + z # 重新计算长度 string = string[:z] + ") " + string[z:] break break return string if __name__ == '__main__': p = Practice() cal = Calculation() items = p.practice_middle(count=5) # items = p.pratice_primary(count=5,type="primary") for item in items: # print(type(item)) print(item + " = " + str(cal.expression_to_value(string=item))) # p.practice_middle(count=5) # p.practice_high(count=5)
def research(self): context = self.__get_calculation_context() body_params = self.__get_body_params() self.calculation = Calculation() thread.start_new_thread(self.calculation.calculate, (body_params, context, self.result_list))