Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
 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!')
Ejemplo n.º 5
0
    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']))
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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!')
Ejemplo n.º 8
0
    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'])
Ejemplo n.º 9
0
    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']))
Ejemplo n.º 10
0
 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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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
Ejemplo n.º 14
0
    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
Ejemplo n.º 15
0
    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
Ejemplo n.º 16
0
    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
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
 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)