def main(): logger = get_logger(LOGDIR) logger.info('start') logger.info('load faq data') qa_df = pd.read_csv(MUSCLE_QA) q_txt = qa_df['q_txt'].tolist() sep_q_txt = [to_sep_space(i) for i in q_txt] logger.info('load NN Language Model') embed = hub.Module(JA_NNLM_MODEL) embeddings = embed(sep_q_txt) logger.info('to vectors') vecs = execute(embeddings) logger.info('vector shape: {}'.format(vecs.shape)) while True: text = six.moves.input('>> ') if text == '': break sep_input = to_sep_space(text) embeddings = embed([sep_input]) vec = execute(embeddings) sort_i, sim = get_sim_index(vec, vecs) df = qa_df.loc[sort_i] show_sim_faq(df, sim) logger.info('end')
def show_items(self): name = self.stream_cbox.currentText() arr = ['multichain-cli', self.chain, 'subscribe', name] functions.execute(False, arr) arr = [ 'multichain-cli', self.chain, 'liststreamitems', name, 'false', '999999999' ] data = functions.execute(self, arr) if data: tmp_items = json.loads(data.decode('utf-8')) items = self.filter_items(tmp_items) self.stream_table.setRowCount(len(items)) for i in range(len(items)): self.stream_table.setItem( i, 0, QtWidgets.QTableWidgetItem(items[i]['publisher'])) self.stream_table.setItem( i, 1, QtWidgets.QTableWidgetItem(items[i]['key'])) self.stream_table.setItem( i, 2, QtWidgets.QTableWidgetItem(items[i]['data'])) self.stream_table.setItem( i, 3, QtWidgets.QTableWidgetItem(items[i]['time'])) arr = ['multichain-cli', self.chain, 'unsubscribe', name] functions.execute(False, arr)
def main(): logger = get_logger(LOGDIR) logger.info('start') logger.info('load NN Language Model') embed = hub.Module(EN_NNLM_MODEL) qa_df = pd.read_csv(WIKIQA_DIR + '/WikiQA-test.tsv', sep='\t') maps = [] mrrs = [] for q_id in qa_df['QuestionID'].unique(): df = qa_df[qa_df['QuestionID'] == q_id] if 1 not in df['Label'].unique(): logger.debug('{0}: not answer'.format(q_id)) continue q_doc = df['Question'].iloc[0].lower() embeddings = embed([q_doc]) q_vec = execute(embeddings) a_docs = df['Sentence'].map(lambda x: x.lower()).tolist() embeddings = embed(a_docs) a_vecs = execute(embeddings) sort_i, sim = get_sim_index(q_vec, a_vecs) labels = [i for i, v in enumerate(df['Label']) if v == 1] rank = [i + 1 for i, v in enumerate(sort_i) if v in labels] _mrr = 1 / rank[0] _map = sum([1 / i for i in rank]) / len(rank) maps.append(_map) mrrs.append(_mrr) logger.info('{0}: MAP {1}, MRR {2}'.format(q_id, _map, _mrr)) map_avg = sum(maps) / len(maps) mrr_avg = sum(mrrs) / len(mrrs) logger.info('MAP AVG {0} / MRR AVG {1}'.format(map_avg, mrr_avg)) logger.info('end')
def save_wallet(self, chain): wallet = self.name_ledit.text() name = wallet.encode('utf-8').hex() arr = ['multichain-cli', chain, 'getaddresses'] data = functions.execute(self, arr) if data: addr = json.loads(data.decode('utf-8'))[0] arr = ['multichain-cli', chain, 'publish', 'root', addr, name] functions.execute(self, arr) msg = QtWidgets.QMessageBox.information(self, 'Success!', 'Wallet saved!')
def fill_assets(self): self.asset_cbox.clear() self.asset_cbox.addItem(functions.blank) if self.yes_rbtn.isChecked(): from_addr = self.from_addr_cbox.currentText() if from_addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Address!', 'Choose a valid sending address') return else: for k, v in self.from_addr.items(): if v == from_addr: from_addr = k break arr = [ 'multichain-cli', self.chain, 'getaddressbalances', from_addr ] else: arr = ['multichain-cli', self.chain, 'gettotalbalances'] data = functions.execute(self, arr) if data: data = json.loads(data.decode('utf-8')) for asset in data: self.asset_cbox.addItem(asset['name'] + ', quantity:' + str(asset['qty']))
def grant_permission(self): permissions = [] if self.connect_ch.isChecked(): permissions.append('connect') if self.send_ch.isChecked(): permissions.append('send') if self.receive_ch.isChecked(): permissions.append('receive') if self.issue_ch.isChecked(): permissions.append('issue') if self.create_ch.isChecked(): permissions.append('create') permissions = ','.join(permissions) if permissions == '': msg = QtWidgets.QMessageBox.critical( self, 'Invalid Permission!', 'Choose permission(s) to grant') return if self.yes_rbtn.isChecked(): name = self.name_ledit.text() if not functions.check_name(self, self.chain, name, False): return addr = self.addr_ledit.text() if len(addr) < 38: msg = QtWidgets.QMessageBox.information( self, 'Invalid Address!', 'Enter a valid address') return permissions = permissions + ',send' else: addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Address!', 'Choose a valid address') return for key, val in self.wallets.items(): if val == addr: addr = key break msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Are you sure you want to grant "' + permissions + '" permission(s) to this wallet?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: arr = ['multichain-cli', self.chain, 'grant', addr, permissions] data = functions.execute(self, arr) if data: if self.yes_rbtn.isChecked(): self.save_wallet(name, addr) self.addr_ledit.clear() msg = QtWidgets.QMessageBox.information( self, 'Successful!', 'Permissions successfully granted!') self.wallets = functions.fetch_from_stream( self, self.chain, 'root') self.fill_addresses() else: return
def save_wallet(self, wallet, addr): name = functions.get_name(self, self.chain) wallet = name + '_' + wallet wallet = wallet.encode('utf-8').hex() arr = ['multichain-cli', self.chain, 'publish', 'root', addr, wallet] out = functions.execute(self, arr) if out: msg = QtWidgets.QMessageBox.information(self, 'Success!', 'You have a new Wallet!')
def fill_streams(self): self.stream_cbox.clear() self.stream_cbox.addItem(functions.blank) arr = ['multichain-cli', self.chain, 'liststreams'] data = functions.execute(self, arr) if data: data = json.loads(data.decode('utf-8')) for item in data: if item['name'] != 'root': self.stream_cbox.addItem(item['name'])
def fill_assets(self): self.asset_cbox.clear() self.asset_cbox.addItem(functions.blank) arr = ['multichain-cli', self.chain, 'listassets'] data = functions.execute(self, arr) if data: data = json.loads(data.decode('utf-8')) for asset in data: self.asset_cbox.addItem(asset['name'] + ',current quantity: ' + str(asset['issueqty']) + ',smallest unit: ' + str(asset['units']))
def fetch_parameters(self): arr = ['multichain-cli', self.chain, 'getblockchainparams'] data = functions.execute(self, arr) if data: data = json.loads(data.decode('utf-8')) self.param_table.setRowCount(len(data)) i = 0 for key, value in data.items(): self.param_table.setItem(i, 0, QtWidgets.QTableWidgetItem(key)) self.param_table.setItem( i, 1, QtWidgets.QTableWidgetItem(str(value))) i = i + 1 else: return False
def get_new_wallet(self): name = self.wallet_ledit.text() if not functions.check_name(self, self.chain, name): return msg = QtWidgets.QMessageBox.information( self, 'Confirm', 'Are you sure you want to create a new wallet with this name?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: arr = ['multichain-cli', self.chain, 'getnewaddress'] data = functions.execute(self, arr) if data: addr = data.decode('utf-8').split('\n')[0] self.save_wallet(name, addr) else: return
def publish_to_stream(self): name = self.stream_cbox.currentText() if name == functions.blank: msg = QtWidgets.QMessageBox.information(self, 'Invalid Stream!', 'Choose a valid stream') return key = self.key_ledit.text() data = self.data_ledit.text() if len(key) < 3 or len(data) < 3: msg = QtWidgets.QMessageBox.information( self, 'Invalid Key/Data!', 'Length of key and data should be at least 3') return else: data = data.encode('utf-8').hex() if self.yes_rbtn.isChecked(): addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Wallet!', 'Choose a valid wallet') return else: for k, v in self.wallets.items(): if v == addr: addr = k break arr = [ 'multichain-cli', self.chain, 'publishfrom', addr, name, key, data ] else: arr = ['multichain-cli', self.chain, 'publish', name, key, data] msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Do you want to publish to the stream "' + name + '"?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: data = functions.execute(self, arr) if data: msg = QtWidgets.QMessageBox.information( self, 'Success!', 'Publishing successful') return
def revoke_permission(self): addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information(self, 'Invalid Address!', 'Choose a valid address') return for key, val in self.wallets.items(): if val == addr: addr = key break permissions = [] if self.connect_ch.isChecked(): permissions.append('connect') if self.send_ch.isChecked(): permissions.append('send') if self.receive_ch.isChecked(): permissions.append('receive') if self.issue_ch.isChecked(): permissions.append('issue') if self.create_ch.isChecked(): permissions.append('create') permissions = ','.join(permissions) if permissions == '': msg = QtWidgets.QMessageBox.critical( self, 'Invalid Permission!', 'Choose permission(s) to revoke') return msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Are you sure you want to revoke "' + permissions + '" permission(s) from this wallet?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: arr = ['multichain-cli', self.chain, 'revoke', addr, permissions] data = functions.execute(self, arr) if data: msg = QtWidgets.QMessageBox.information( self, 'Successful!', 'Permissions successfully revoked!') self.fill_addresses() else: return
def create_stream(self): name = self.stream_ledit.text() if len(name) < 3: msg = QtWidgets.QMessageBox.information( self, 'Invalid Name!', 'Name length should be at least 3') return if self.yes_rbtn.isChecked(): addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Wallet!', 'Choose a valid wallet') return else: for k, v in self.wallets.items(): if v == addr: addr = k break arr = [ 'multichain-cli', self.chain, 'createfrom', addr, 'stream', name, 'true' ] else: arr = [ 'multichain-cli', self.chain, 'create', 'stream', name, 'true' ] msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Do you want to create the stream "' + name + '"?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: data = functions.execute(self, arr) if data: msg = QtWidgets.QMessageBox.information( self, 'Success!', 'Create successful!') return
def issue_asset(self): to_addr = self.to_addr_cbox.currentText() if to_addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Wallet!', 'Choose a valid receiving wallet') return else: for key, val in self.to_addr.items(): if val == to_addr: to_addr = key break if self.yes_rbtn.isChecked(): addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Wallet!', 'Choose a valid issuing wallet') return else: for key, val in self.addr.items(): if val == addr: addr = key break asset = self.name_ledit.text() if self.yes_open_rbtn_2.isChecked(): fin_asset = '{"name":"' + asset + '","open":true}' else: fin_asset = '{"name":"' + asset + '","open":false}' qty = self.qty_ledit.text() unit = self.unit_ledit.text() if asset == '' or qty == '' or unit == '': msg = QtWidgets.QMessageBox.information( self, 'Invalid Information!', 'Enter valid asset name, quantity and smallest unit') return msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Do you want to issue ' + qty + ' amount of "' + asset + '" to this wallet?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: if self.yes_rbtn.isChecked(): arr = [ 'multichain-cli', self.chain, 'issuefrom', addr, to_addr, fin_asset, qty, unit ] else: arr = [ 'multichain-cli', self.chain, 'issue', to_addr, fin_asset, qty, unit ] data = functions.execute(self, arr) if data: msg = QtWidgets.QMessageBox.information( self, 'Successful!', 'Issuing successful') self.fill_addresses() self.name_ledit.clear() self.qty_ledit.clear() self.unit_ledit.clear() else: return
def send_asset(self): addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Address!', 'Choose a valid receiving address') return else: for k, v in self.addr.items(): if v == addr: addr = k break if self.yes_rbtn.isChecked(): from_addr = self.from_addr_cbox.currentText() if from_addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Address!', 'Choose a valid sending address') return else: for k, v in self.from_addr.items(): if v == from_addr: from_addr = k break asset = self.asset_cbox.currentText() if asset == functions.blank: msg = QtWidgets.QMessageBox.information(self, 'Invalid Asset!', 'Choose a valid asset') return asset = asset.split(',')[0] qty = self.qty_ledit.text() if qty == '': msg = QtWidgets.QMessageBox.information(self, 'Invalid Quantity!', 'Enter quantity') return if self.yes_rbtn.isChecked(): arr = [ 'multichain-cli', self.chain, 'sendassetfrom', from_addr, addr, asset, qty ] else: arr = ['multichain-cli', self.chain, 'sendasset', addr, asset, qty] msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Do you want to send ' + qty + ' amount of "' + asset + '" to this wallet?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: data = functions.execute(self, arr) if data: msg = QtWidgets.QMessageBox.information( self, 'Successful!', 'Transaction successful!') self.fill_addresses() self.fill_assets() self.qty_ledit.clear() else: return else: return
def save_wallet(self, name, addr): name = name.encode('utf-8').hex() arr = ['multichain-cli', self.chain, 'publish', 'root', addr, name] data = functions.execute(self, arr)
def issue_more_asset(self): to_addr = self.to_addr_cbox.currentText() if to_addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Wallet!', 'Choose a valid receiving wallet') return else: for key, val in self.to_addr.items(): if val == to_addr: to_addr = key break if self.yes_rbtn.isChecked(): addr = self.addr_cbox.currentText() if addr == functions.blank: msg = QtWidgets.QMessageBox.information( self, 'Invalid Wallet!', 'Choose a valid issuing Wallet') return else: for key, val in self.addr.items(): if val == addr: addr = key break asset = self.asset_cbox.currentText().split(',')[0] if asset == functions.blank: msg = QtWidgets.QMessageBox.information(self, 'Invalid Asset!', 'Choose a valid asset') return qty = self.qty_ledit.text() if qty == '': msg = QtWidgets.QMessageBox.information(self, 'Invalid Quantity!', 'Enter valid quantity') return msg = QtWidgets.QMessageBox.question( self, 'Confirm', 'Do you want to issue ' + qty + ' amount more of "' + asset + '" to this wallet?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if msg == QtWidgets.QMessageBox.Yes: if self.yes_rbtn.isChecked(): arr = [ 'multichain-cli', self.chain, 'issuemorefrom', addr, to_addr, asset, qty ] else: arr = [ 'multichain-cli', self.chain, 'issuemore', to_addr, asset, qty ] data = functions.execute(self, arr) if data: msg = QtWidgets.QMessageBox.information( self, 'Successful!', 'Issuing successful') self.fill_addresses() self.fill_assets() self.qty_ledit.clear() else: return
def delete_folder(self, name): arr = ['whoami'] username = functions.execute(False, arr).decode('utf-8').split('\n')[0] arr = ['rm', '-r', '/home/' + username + '/.multichain/' + name + '/'] functions.execute(False, arr)