def main():
   from Args import Args
   print("OutcomeStats.main()")
#   print(type(self.outcomeFormats()))
   args=Args('occurrence_qc.json', 'outcomeStats.xlsx', 'stats.ini')
   workbook = xlsxwriter.Workbook(args.getOutfile())
   worksheet = workbook.add_worksheet()
   origin1 = [0,0]
   origin2 = [5,0]

   stats=OutcomeStats(workbook, worksheet,args, origin1, origin2)
def main():
    from Args import Args
    print("OutcomeStats.main()")
    #   print(type(self.outcomeFormats()))
    args = Args('occurrence_qc.json', 'outcomeStats.xlsx', 'stats.ini')
    workbook = xlsxwriter.Workbook(args.getOutfile())
    worksheet = workbook.add_worksheet()
    origin1 = [0, 0]
    origin2 = [5, 0]

    stats = OutcomeStats(workbook, worksheet, args, origin1, origin2)
Ejemplo n.º 3
0
def main(argv):
    # Setup logging
    setup_log()
    logging.debug('Hello!')

    # Print usage
    if len(argv) <= 1:
        abort('USAGE: jm module [module args]')

    # Parse the arguments
    args = Args.Args(argv[1:])
    parse_global_config(args.args)

    # Load the module
    module = args.margs[0]
    job = JobBinary(module)

    # Remove JM arguments when passing to the module
    margv = args.margs

    # Wrapper to include job module
    def run_wrapper(argv):
        return run(argv, job)

    # Run the module
    logging.info('Running module')
    r = job.spits_main(margv, run_wrapper)

    # Finalize
    logging.debug('Bye!')
Ejemplo n.º 4
0
def main(argv):
    # Print usage
    if len(argv) <= 1:
        abort('USAGE: jm module [module args]')

    # Parse the arguments
    args = Args.Args(argv[1:])
    parse_global_config(args.args)

    # Setup logging
    setup_log()
    logging.debug('Hello!')

    # Enable memory debugging
    if jm_memstat == 1:
        memstat.enable()
    memstat.stats()

    # Load the module
    module = args.margs[0]
    job = JobBinary(module)

    # Remove JM arguments when passing to the module
    margv = args.margs

    # Keep a run identifier
    runid = [0]

    # Wrapper to include job module
    def run_wrapper(argv, jobinfo):
        runid[0] = runid[0] + 1
        return run(argv, jobinfo, job, runid[0])

    # Wrapper for the heartbeat
    finished = [False]

    def heartbeat_wrapper():
        heartbeat(finished)

    # Start the heartbeat
    threading.Thread(target=heartbeat_wrapper).start()

    # Run the module
    logging.info('Running module')
    memstat.stats()
    r = job.spits_main(margv, run_wrapper)
    memstat.stats()

    # Stop the heartbeat thread
    finished[0] = True

    # Kill the workers
    if jm_killtms:
        killtms()

    # Print final memory report
    memstat.stats()

    # Finalize
    logging.debug('Bye!')
Ejemplo n.º 5
0
def main(argv):
    if len(argv) <= 1:
        abort('USAGE: tm [args] module [module args]')
    args = Args.Args(argv[1:])
    parse_global_config(args.args)
    setup_log()
    logging.debug('Hello!')
    App(args).run()
    logging.debug('Bye!')
Ejemplo n.º 6
0
def main():
    args = Args({'-H': 'tgtHosts', '-r': 'redirectPage', '-f': 'userPassFile' })
    options = args.getArgs()
    tgtHosts = str(options.tgtHosts).split(', ')
    passwordFile = options.userPassFile
    redirect = options.redirectPage
    for tgtHost in tgtHosts:
        username = None
        password = None
        if anonLogin(tgtHost) == True:
            username = '******'
            password = '******'
            print '[+] Using Anonymous Creds to Attack'
            attack(username, password, tgtHost, redirect)
        elif passwordFile != None:
            (username, password) = bruteLogin(tgtHost, passwordFile)
        if password != None:
            print '[+] Using Creds: ' + username + '/' + 'password to attack'
        attack(username, password, tgtHost, redirect)
Ejemplo n.º 7
0
def _cli_callable_from_params(params: List[str] = None) -> callable:
    args: Args = Args(params)

    if args.version:
        return api.version_method

    if args.clear_log:
        return api.clear_log_method

    if args.dump_log:
        return partial(api.dump_log_method, args.dump_log)

    return lambda: None
Ejemplo n.º 8
0
def get_argument():
    """ Read the args and return a date object from the date=
       the worksheets= and the optional bonus """
    args = Args.Parse(date=str, worksheets=str, bonus=False)
    try:
        date = args.date
        date = [int(x) for x in date.split('-')]
        date = datetime(date[0], date[1], date[2]).date()
    except:
        print(f"Date {args.date} should be in format yyyy-mm-dd")
        raise

    try:
        worksheets = args.worksheets.split(',')
    except:
        print(f"Worksheets {args.worksheets} should be in the form of "
              "\"worksheet-demo,worksheet00-pseudo\"")
        print("No blanks or quoates allowed by the parser Comma separated!")
        raise

    bonus = bool(args.bonus)  # Force to True/Fals
    return date, worksheets, bonus
Ejemplo n.º 9
0
from inputs import inputs
from glob import glob
import Args
import sys
from evalInContext import evalInContext
import os.path as osp
from datetime import datetime
import json

try:
    import db
except ModuleNotFoundError:
    print("no db module")
    sys.exit(0)

args = Args.Parse(force=0, local=0, verbose=0)

bottle.SimpleTemplate.defaults["get_url"] = lambda x: x
bottle.SimpleTemplate.defaults["static"] = lambda x: x


def getAnswers(path):
    """Save the answer from a post"""
    key = path.split("/")[-1].split(".")[0]
    inp = inputs(key)
    pages = None
    section = '003'
    team_number = 0
    member_number = 0
    rid = 1
    # Render assuming no pages, but re-render w/ pages to get all the info
Ejemplo n.º 10
0

if os.name == 'nt':
    defaultFontSize = 16
else:
    defaultFontSize = 12

commandLineArgSpecs = (
    ('fontscheme', 0, 'scheme', 'fonts to use [eg pmw2] (Tk defaults)'),
    ('fontsize', 0, 'num', 'size of fonts to use with fontscheme',
     defaultFontSize),
    ('stdout', 0, Args.Bool, 'print messages rather than display in label'),
)

program = 'All.py'
msg = Args.parseArgs(program, sys.argv, commandLineArgSpecs, 0)
if msg is not None:
    print msg
    sys.exit()

size = Args.get('fontsize')
fontScheme = Args.get('fontscheme')
Pmw.initialise(root, size=size, fontScheme=fontScheme, useTkOptionDb=1)

root.title('Pmw ' + Pmw.version() + ' megawidget demonstration')
if size < 18:
    geometry = '800x550'
else:
    geometry = '1000x700'
root.geometry(geometry)
 def test_args_version_is_false_when_version_is_not_in_args_list(self):
     assert not Args([]).version
 def test_args_dump_log_defaults_to_cwd(self):
     cwd: Path = Path()
     params = ['--dump-log']
     assert Args(params).dump_log == cwd
 def test_unrecognized_arguments_raises_system_exit(self):
     with pytest.raises(SystemExit), mock.patch('sys.stderr'):
         Args(['--foo'])
 def test_expected_params(self, params):
     assert Args(params)
Ejemplo n.º 15
0
-xyz (if at least x,y have defaults)

abreviations allowed (arguments = 'name', 'territorial') (acceptable, -na -ter) etc... unless ambiguious


group = argparse.add_mutually_exclusive_group()    
    group.add_argument...
any arguments added, only 1 can be used or error

.set_defaults(**kwargs) --> will become default arguments even if the arguments were not created with .add_argument
.get_default('key') --> return the default of the key

--- useage ---
(above class saved in Args.py modual)
import Args
arg_parser = Args.Args()
inputArgs = arg_parser.parse()
inputArgs.ARGNAME #ie inputArgs.sample



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------
Looping

for x,y in zip(l1,l2): --> loop through two items at once
for k,v in dictionary.iteriteritems(): --> loop through keys and values in a dictionary

xrange(0,10,2) --> range of 0 to 10, by 2s
Ejemplo n.º 16
0
'''
Label the blobs using a previously trained model

Gary Bishop July 2018
'''

import pandas as pd
import Args
import pickle
from features import getFeatures

args = Args.Parse(inblobs='output.blobs.bz2',
                  outblobs='output.labeled.bz2',
                  model='models/LR1.pkl')

data = pd.read_pickle(args.inblobs)

model = pickle.load(open(args.model, 'rb'))

features = getFeatures(data)

labels = model.predict(features)
data.isdot = labels

data.to_pickle(args.outblobs)
Ejemplo n.º 17
0
def main():
    # Parse arguments
    Args.parse()
Ejemplo n.º 18
0
from bottle import route, request, static_file, run
import Args
import pandas as pd
import numpy as np
from PIL import Image
import base64
from io import BytesIO

args = Args.Parse(
    blobs=str,
    outblobs=str
)

data = pd.read_pickle(args.blobs)
data['colFromIndex'] = data.index
data = data.sort_values(['isdot', 'colFromIndex'])


perRow = 10
NROWS = 100


def toImage(img, title):
    tpl = '<image title="{title}" src="data:image/png;base64,{data}" />'
    pil_img = Image.fromarray(img)
    buff = BytesIO()
    pil_img.save(buff, format="png")
    data = base64.b64encode(buff.getvalue()).decode("utf-8")
    t = tpl.format(data=data, title=title)
    return t
Ejemplo n.º 19
0
# import OutcomeFormats
from OutcomeStats import *
from OutcomeFormats import *
from Args import *
import argparse

# import unittest

# parser = argparse.ArgumentParser()
# parser.add_argument('--i',default='occurrence_qc.json', help="Defaults to occurrence_qc.json if '--i' absent")
# parser.add_argument('--o',default='outcomeStats.xlsx', help="Defaults to outcomeStats.xlsx if '--o' absent")
# parser.add_argument('--c',default='stats.ini', help="Defaults to stats.ini if --c absent")
# args = parser.parse_args()
# outfile = args.o
# args = parser.parse_args()
args = Args("occurrence_qc.json", "outcomeStats.xlsx", "stats.ini")
# Supply your favorite JSON output of FP-Akka as input. Do python3 statstest.py --help for help
# tested against FP-Akka 1.5.2 JSON output with python3
if __name__ == "__main__":

    ###################################################
    ############# First initialize resources ##########
    ###################################################
    # set input jason file from  FPAkka or elsewhere
    # set output xlsx file
    # set stats.ini configurations
    args = Args("occurrence_qc.json", "outcomeStats.xlsx", "stats.ini")

    # load entire jason file. (Note: syntactically it is a Dictionary !!! )
    with open(args.getInfile()) as data_file:
        fpAkkaOutput = json.load(data_file)
Ejemplo n.º 20
0
    for f in os.listdir(kron_dir):
        filename = os.fsdecode(f)
        if filename.endswith(".txt"):
            txt_files.append(filename)
        elif filename.endswith(".dat"):
            return utils.load_graph_list(os.path.join(kron_dir, filename))
    G_list = []
    for filename in txt_files:
        G_list.append(
            utils.snap_txt_output_to_nx(os.path.join(kron_dir, filename)))

    return G_list


if __name__ == "__main__":
    args = Args()
    args_evaluate = Args_evaluate()

    parser = argparse.ArgumentParser(description="Evaluation arguments.")
    feature_parser = parser.add_mutually_exclusive_group(required=False)
    feature_parser.add_argument("--export-real",
                                dest="export",
                                action="store_true")
    feature_parser.add_argument("--no-export-real",
                                dest="export",
                                action="store_false")
    feature_parser.add_argument(
        "--kron-dir",
        dest="kron_dir",
        help="Directory where graphs generated by kronecker method is stored.",
    )
Ejemplo n.º 21
0
#
# The idea is to create a new project on Transifex to get humans to help but to use the
# old THR translations and Google until then.

import Args  # my args module
import polib
import re
import os.path as osp
import requests
import json
from apiclient.discovery import build

args = Args.Parse(
    podir='',  # path to dir with po files
    src='src/Messages.ts',  # where to find the needed strings
    langs=str,  # comma separataed list of 2-letter iso language codes
    msgdir=str,  # directory for the json files for translations
    key=str,  # Google API key
    _config='scripts/translatekey.json')

# extract strings from my Messages.ts file
msgpat = re.compile(r"\s+(\w+):\s*'(.*)',")
enMessages = []
for line in open(args.src, 'r'):
    m = msgpat.match(line)
    if m:
        enMessages.append(m.groups())

API_KEY = args.key

Ejemplo n.º 22
0
	    text = self.text
	self.displayCommand(text)

if os.name == 'nt':
    defaultFontSize = 16
else:
    defaultFontSize = 12

commandLineArgSpecs = (
    ('fontscheme', 0, 'scheme',  'fonts to use [eg pmw2] (Tk defaults)'),
    ('fontsize',   0, 'num',     'size of fonts to use with fontscheme', defaultFontSize),
    ('stdout',     0, Args.Bool, 'print messages rather than display in label'),
)

program = 'All.py'
msg = Args.parseArgs(program, sys.argv, commandLineArgSpecs, 0)
if msg is not None:
    print msg 
    sys.exit()

size = Args.get('fontsize')
fontScheme = Args.get('fontscheme')
Pmw.initialise(root, size = size, fontScheme = fontScheme, useTkOptionDb = 1)

root.title('Pmw ' + Pmw.version() + ' megawidget demonstration')
if size < 18:
    geometry = '800x550'
else:
    geometry = '1000x700'
root.geometry(geometry)
Ejemplo n.º 23
0
 def test_args(self):
     args = Args.Args(['--timeout=10', 'module', 'arg1', 'arg2'])
     self.assertIn('timeout', args.args)
     self.assertEqual(args.args['timeout'], '10')
     self.assertSequenceEqual(['module', 'arg1', 'arg2'], args.margs)
 def test_args_param_property_is_true_when_param_in_args_list(self, params, param_property):
     args: Any = Args(params)
     assert param_property.getter(args)
Ejemplo n.º 25
0
 def test_parse_global_config(self):
     args = Args.Args(['--timeout=10'])
     tm.parse_global_config(args.args)
     self.assertEqual(tm.tm_timeout, 10)
 def test_args_dump_log_is_not_none_when_dump_log_dir_in_args_list(self):
     params = ['--dump-log', '.']
     assert Args(params).dump_log is not None
Ejemplo n.º 27
0
            tf = item[1]
            dl = file[item[0]][1]
            TF = ((k1 + 1) * tf) / (k1 * (0.25 + 0.75 * dl / avdl) + tf)

            ### Add into Rank List
            if item[0] not in rank: rank[item[0]] = [0] * len(term)
            rank[item[0]][indx] = float(DF * TF * QF)

        ### Add into Vect List
        vect.append(time)
        indx += 1

    return vect, rank


args = Args.Args()

vocb = Parse.ParseVocb(args.m)
file, avdl = Parse.ParseFile(args.m, args.d)
invt = Parse.ParseInvt(args.m)
qury = Parse.ParseQury(args.i)
print("")

N = len(file)
text = "query_id,retrieved_docs\n"
for temp in qury:

    accm = {}

    ### Consider label k
    for k in range(1, 5):
 def test_non_existing_dir_raises_argument_type_error(self, tmp_path_as_cwd):
     with pytest.raises(SystemExit), pytest.raises(argparse.ArgumentTypeError), mock.patch('sys.stderr'):
         params = ['--dump-log', 'non_existing_dir']
         Args(params)
Ejemplo n.º 29
0
   elen = len(expected)
   # we could parameterize these per question if desired.
   dmin = max(1, 0.1 * elen)
   dmax = max(2, 0.5 * elen)
   p = (distance - dmin) / (dmax - dmin)
   p = max(0, min(1, p))
   factor = 0.75 * (1 - p) + 0.25 * p
   return distance, factor * answer["points"]


if __name__ == "__main__":
   args = Args.Parse(
      testing=0,
      verbose=0,
      validate=0,
      list=0, # set to non-zero to get a list of items to grade
      force="",  # set to force grading an item
      user="",  # set to select only one user
      maxpenalty=0.50,  # set to reduce max penalty
      )

   # ## Connect to the class db
   db.init()
   db = db.open_db()
   cursor = db.cursor()

   # ## Get the classroll
   roll = pd.read_sql("""select * from roll""", db, index_col="onyen")

   # find those who need grading
   if args.force:
Ejemplo n.º 30
0
import xlsxwriter
#import OutcomeFormats
from OutcomeStats import *
from OutcomeFormats import *
from Args import *
import argparse
#import unittest

#parser = argparse.ArgumentParser()
#parser.add_argument('--i',default='occurrence_qc.json', help="Defaults to occurrence_qc.json if '--i' absent")
#parser.add_argument('--o',default='outcomeStats.xlsx', help="Defaults to outcomeStats.xlsx if '--o' absent")
#parser.add_argument('--c',default='stats.ini', help="Defaults to stats.ini if --c absent")
#args = parser.parse_args()
#outfile = args.o
#args = parser.parse_args()
args=Args('occurrence_qc.json', 'outcomeStats.xlsx', 'stats.ini')
#Supply your favorite JSON output of FP-Akka as input. Do python3 statstest.py --help for help
#tested against FP-Akka 1.5.2 JSON output with python3
if __name__=="__main__":
   
   ###################################################
   ############# First initialize resources ##########
   ###################################################
   # set input jason file from  FPAkka or elsewhere
   # set output xlsx file
   # set stats.ini configurations
   args=Args('occurrence_qc.json', 'outcomeStats.xlsx', 'stats.ini')

   #load entire jason file. (Note: syntactically it is a Dictionary !!! )
   with open(args.getInfile()) as data_file:
         fpAkkaOutput=json.load(data_file)
Ejemplo n.º 31
0
def get_parser():
	main_parser = argparse.ArgumentParser()
	main_parser.add_argument('--version', 
						action='version', 
						version=version(), 
						help='display version information and exit')
	subparsers = main_parser.add_subparsers(title='modules', dest='which')
	global_parser = argparse.ArgumentParser(add_help=False)

	settings_parser = Args.settings_args(subparsers.add_parser('settings', help='user definable settings', parents=[global_parser]))
	snv_parser = Args.snv_args(subparsers.add_parser('snv', help='run single nucleotide variant association models', parents=[global_parser]))
	snvgroup_parser = Args.snvgroup_args(subparsers.add_parser('snvgroup', help='run variant group (ie. gene) based association models', parents=[global_parser]))
	meta_parser = Args.meta_args(subparsers.add_parser('meta', help='run meta analysis', parents=[global_parser]))
	compile_parser = Args.compile_args(subparsers.add_parser('compile', help='verify and compile results files', parents=[global_parser]))
	resubmit_parser = Args.resubmit_args(subparsers.add_parser('resubmit', help='resubmit failed results', parents=[global_parser]))
	snvplot_parser = Args.snvplot_args(subparsers.add_parser('snvplot', help='generate qq and manhattan plots for single variant results', parents=[global_parser]))
	snvgroupplot_parser = Args.snvgroupplot_args(subparsers.add_parser('snvgroupplot', help='generate qq and manhattan plots for grouped variant results', parents=[global_parser]))
	filter_parser = Args.filter_args(subparsers.add_parser('filter', help='filter results / correct single variant results for genomic inflation', parents=[global_parser]))
	merge_parser = Args.merge_args(subparsers.add_parser('merge', help='merge and annotate results with external files / snpEff', parents=[global_parser]))
	tools_parser = Args.tools_args(subparsers.add_parser('tools', help='run any command line tool with ability to include genomic region automatically', parents=[global_parser]))

	return main_parser
Ejemplo n.º 32
0
'''
Extract fixations from videos by finding the blue dots

Gary Bishop July 2018
'''

import cv2
import numpy as np
import pandas as pd
import Args

sampleVideo = ('/home/gb/Dropbox/Karen and Gary Shared Files/'
               'Videos & Transcripts/MSB/MSB_Video 1 (09-30-17).mp4')

args = Args.Parse(video=sampleVideo,
                  start=100,
                  end=3680,
                  blobs='output.blobs.bz2')

vc = cv2.VideoCapture(args.video)


def grabFrame(fn):
    '''
    Extract a frame and convert it to LAB float32 format
    '''
    vc.set(cv2.CAP_PROP_POS_FRAMES, fn)
    rval, im = vc.read()
    im = cv2.cvtColor(im.astype(np.float32) / 255.0, cv2.COLOR_BGR2LAB)
    return im

def main():
    parser = Args.Parser().getParser()
    args = parser.parse_args()

    processors = {
        'zy': ZYProcessor,
    }

    device = torch.device("cuda:3" if torch.cuda.is_available() else "cpu")
    n_gpu = torch.cuda.device_count()

    logging.basicConfig(
        format='%(asctime)s - %(levelname)s - %(name)s -   %(message)s',
        datefmt='%m/%d/%Y %H:%M:%S',
        level=logging.INFO)

    if not args.do_train and not args.do_eval and not args.do_predict:
        raise ValueError(
            "At least one of `do_train` or `do_eval` or `do_predict` must be True."
        )

    if not os.path.exists(args.output_dir):
        os.mkdir(args.output_dir)

    task_name = args.task_name.lower()
    if task_name not in processors:
        raise ValueError("Task not found: %s" % (task_name))

    processor = processors[task_name]()
    label_list = processor.get_labels()
    num_labels = len(label_list)

    tokenizer = BertTokenizer.from_pretrained(args.vocab_file,
                                              do_lower_case=args.do_lower_case)

    train_examples = None
    num_train_optimization_steps = None
    if args.do_train:
        train_examples = processor.get_train_examples(args.data_dir)
        num_train_optimization_steps = int(
            len(train_examples) /
            args.train_batch_size) * args.num_train_epochs

    model = BertForMultiSequenceClassification.from_pretrained(
        args.model_dir, num_labels=num_labels)

    model.to(device)

    # Prepare optimizer
    if args.do_train:
        param_optimizer = list(model.named_parameters())
        no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight']
        optimizer_grouped_parameters = [{
            'params': [
                p for n, p in param_optimizer
                if not any(nd in n for nd in no_decay)
            ],
            'weight_decay':
            0.01
        }, {
            'params':
            [p for n, p in param_optimizer if any(nd in n for nd in no_decay)],
            'weight_decay':
            0.0
        }]

        optimizer = BertAdam(optimizer_grouped_parameters,
                             lr=args.learning_rate,
                             warmup=args.warmup_proportion,
                             t_total=num_train_optimization_steps)

    if args.do_train:
        train_features = convert_examples_to_features(train_examples,
                                                      label_list,
                                                      args.max_seq_length,
                                                      tokenizer)
        logger.info("***** Running training *****")
        logger.info("  Num examples = %d", len(train_examples))
        logger.info("  Batch size = %d", args.train_batch_size)
        logger.info("  Num steps = %d", num_train_optimization_steps)
        all_input_ids = torch.tensor([f.input_ids for f in train_features],
                                     dtype=torch.long)
        all_input_mask = torch.tensor([f.input_mask for f in train_features],
                                      dtype=torch.long)
        all_segment_ids = torch.tensor([f.segment_ids for f in train_features],
                                       dtype=torch.long)
        all_label_ids = torch.tensor([f.label_ids for f in train_features],
                                     dtype=torch.float32)

        train_data = TensorDataset(all_input_ids, all_input_mask,
                                   all_segment_ids, all_label_ids)
        train_sampler = RandomSampler(train_data)
        train_dataloader = DataLoader(train_data,
                                      sampler=train_sampler,
                                      batch_size=args.train_batch_size)

        model.train()

        for _ in trange(int(args.num_train_epochs), desc="Epoch"):
            for step, batch in enumerate(
                    tqdm(train_dataloader, desc="Iteration")):
                batch = tuple(t.to(device) for t in batch)
                input_ids, input_mask, segment_ids, label_ids = batch

                logits, _ = model(input_ids,
                                  segment_ids,
                                  input_mask,
                                  labels=None)

                loss_fct = torch.nn.BCEWithLogitsLoss()
                loss = loss_fct(logits, label_ids)
                loss.backward()

                optimizer.step()
                optimizer.zero_grad()

                logger.info('')
                logger.info('step: %d' % (step))
                logger.info('loss: %f' % (loss.item()))

        model_to_save = model.module if hasattr(
            model, 'module') else model  # Only save the model it-self

        # If we save using the predefined names, we can load using `from_pretrained`
        output_model_file = os.path.join(args.output_dir, WEIGHTS_NAME)
        output_config_file = os.path.join(args.output_dir, CONFIG_NAME)

        torch.save(model_to_save.state_dict(), output_model_file)
        model_to_save.config.to_json_file(output_config_file)
        tokenizer.save_vocabulary(args.output_dir)

    if args.do_eval:
        model = BertForMultiSequenceClassification.from_pretrained(
            args.output_dir, num_labels=num_labels)
        tokenizer = BertTokenizer.from_pretrained(
            args.output_dir, do_lower_case=args.do_lower_case)
        model.to(device)
        eval_examples = processor.get_dev_examples(args.data_dir)
        eval_features = convert_examples_to_features(eval_examples, label_list,
                                                     args.max_seq_length,
                                                     tokenizer)
        logger.info("***** Running evaluation *****")
        logger.info("  Num examples = %d", len(eval_examples))
        logger.info("  Batch size = %d", args.eval_batch_size)
        all_input_ids = torch.tensor([f.input_ids for f in eval_features],
                                     dtype=torch.long)
        all_input_mask = torch.tensor([f.input_mask for f in eval_features],
                                      dtype=torch.long)
        all_segment_ids = torch.tensor([f.segment_ids for f in eval_features],
                                       dtype=torch.long)
        all_label_ids = torch.tensor([f.label_ids for f in eval_features],
                                     dtype=torch.float32)

        eval_data = TensorDataset(all_input_ids, all_input_mask,
                                  all_segment_ids, all_label_ids)
        # Run prediction for full data
        eval_sampler = SequentialSampler(eval_data)
        eval_dataloader = DataLoader(eval_data,
                                     sampler=eval_sampler,
                                     batch_size=args.eval_batch_size)

        model.eval()

        recall = 0
        precision = 0
        F1 = 0
        steps = 0
        for input_ids, input_mask, segment_ids, label_ids in tqdm(
                eval_dataloader, desc="Evaluating"):
            input_ids = input_ids.to(device)
            input_mask = input_mask.to(device)
            segment_ids = segment_ids.to(device)
            label_ids = label_ids.to(device)

            with torch.no_grad():
                logits, probilities = model(input_ids,
                                            segment_ids,
                                            input_mask,
                                            labels=None)

                loss_fct = torch.nn.BCEWithLogitsLoss()
                loss = loss_fct(logits, label_ids)

            pred = probilities.detach().cpu().numpy()
            label = label_ids.detach().cpu().numpy()
            pred[pred > 0.5] = 1.0
            pred[pred <= 0.5] = 0.0

            steps += 1
            F1 += f1_score(y_true=label, y_pred=pred, average='micro')
            precision += precision_score(y_true=label,
                                         y_pred=pred,
                                         average='micro')
            recall += recall_score(y_true=label, y_pred=pred, average='micro')

            logger.info('')
            logger.info('loss: %f' % (loss.item()))
            logger.info('recall: %f' % (recall / steps))
            logger.info('precision %f' % (precision / steps))
            logger.info('f1: %f' % (F1 / steps))

    if args.do_predict:
        model = BertForMultiSequenceClassification.from_pretrained(
            args.output_dir, num_labels=num_labels)
        tokenizer = BertTokenizer.from_pretrained(
            args.output_dir, do_lower_case=args.do_lower_case)
        model.to(device)
        pred_examples = processor.get_test_examples(args.data_dir)
        pred_features = convert_examples_to_features(pred_examples, label_list,
                                                     args.max_seq_length,
                                                     tokenizer)
        logger.info("***** Running prediction *****")
        logger.info("  Num examples = %d", len(pred_examples))
        logger.info("  Batch size = %d", args.predict_batch_size)
        all_input_ids = torch.tensor([f.input_ids for f in pred_features],
                                     dtype=torch.long)
        all_input_mask = torch.tensor([f.input_mask for f in pred_features],
                                      dtype=torch.long)
        all_segment_ids = torch.tensor([f.segment_ids for f in pred_features],
                                       dtype=torch.long)
        all_label_ids = torch.tensor([f.label_ids for f in pred_features],
                                     dtype=torch.float32)

        pred_data = TensorDataset(all_input_ids, all_input_mask,
                                  all_segment_ids, all_label_ids)
        # Run prediction for full data
        pred_sampler = SequentialSampler(pred_data)
        pred_dataloader = DataLoader(pred_data,
                                     sampler=pred_sampler,
                                     batch_size=args.predict_batch_size)

        model.eval()

        preds = []
        for input_ids, input_mask, segment_ids, label_ids in tqdm(
                pred_dataloader, desc="predicting"):
            input_ids = input_ids.to(device)
            input_mask = input_mask.to(device)
            segment_ids = segment_ids.to(device)
            label_ids = label_ids.to(device)

            with torch.no_grad():
                _, probilities = model(input_ids,
                                       segment_ids,
                                       input_mask,
                                       labels=None)

            pred = probilities.detach().cpu().numpy()
            pred = pred.tolist()
            preds.append(pred)

        write_path = "./output/predicate_infer_out/"
        if not os.path.exists(write_path):
            os.makedirs(write_path)
        score_file = "./output/predicate_infer_out/probility.txt"
        predict_file = "./output/predicate_infer_out/predicate_predict.txt"

        logger.info('')
        logger.info('***********writing predict result**********')
        with open(score_file, 'w', encoding='utf-8') as score_writer:
            with open(predict_file, 'w', encoding='utf-8') as predict_writer:
                num_total_lines = 0
                for batch in preds:
                    for lines in batch:
                        score = ' '.join(str(number)
                                         for number in lines) + '\n'
                        score_writer.write(score)
                        predict_relation = []
                        for idx, prob in enumerate(lines):
                            if prob > 0.5:
                                predict_relation.append(label_list[idx])
                        predict = ' '.join(predict_relation) + '\n'
                        predict_writer.write(predict)
                        num_total_lines += 1
        assert num_total_lines == len(pred_examples)