예제 #1
0
def run_screens(analyses_to_run, version):
    '''
    Mass run of analyses in screens when saltant is down

    Args:
        analyses_to_run (dict): jira tickets sorted by analysis type
    '''

    python_cmd = os.environ.get("HEADNODE_AUTOMATION_PYTHON")
    run_file = os.path.join(os.environ.get("HEADNODE_AUTOMATION_DIR"),
                            "workflows", "run.py")

    # FIXME: Find out how to pass command to screen to create new windows
    # Right now a screen is being created for each analysis -- needs cleanup

    for analysis_type, ticket_library in analyses_to_run.items():
        for ticket in ticket_library:
            library_id = ticket_library["library"]
            analysis_screen = screenutils.Screen(ticket, initialize=True)
            stdout_file = "logs/{}_{}.out".format(ticket, analysis_type)
            stderr_file = "logs/{}_{}.err".format(ticket, analysis_type)

            cmd_str = "{} {} {} {} {} --update > {} 2> {}".format(
                python_cmd,
                run_file,
                ticket,
                version,
                analysis_type,
                stdout_file,
                stderr_file,
            )

        analysis_screen.send_commands(cmd_str)
예제 #2
0
def SendInScreen( screename, py_file ):
	
	s = screenutils.Screen( screename, True )
	
	time.sleep(2)
	
	f = open(py_file, "r")
	old_py_file = f.read()
	
	f = open(py_file, "w")
	f.write(old_py_file)
	f.write("from screenutils import Screen\n")
	f.write("s = Screen('{0}')\n".format(screename))
	f.write("if s.exists:\n".format(screename))
	f.write("\ts.kill()\n".format(screename))
	
	s.send_commands("python {0}".format(py_file))
	
	return s.id
예제 #3
0
 def terminate(self, instance):
     s = screenutils.Screen(instance.screen_name)
     if s.exists:
         s.kill()
예제 #4
0
 def status(self, instance):
     s = screenutils.Screen(instance.screen_name)
     return s.exists
예제 #5
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 17 23:18:56 2019

@author: matteo
"""

import argparse
import screenutils as su

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--command', help='Command', type=str, default='echo hello')
parser.add_argument('--name', help='Name', type=str, default='hello')
parser.add_argument('--nseeds', help='Number of seeds', type=int, default=10)
args = parser.parse_args()

seeds = [198, 833, 693, 826, 354, 963, 263, 176, 140, 154]

for seed in seeds[:args.nseeds]:    
    screen = su.Screen(args.name + '_' + str(seed), create=True)
    commands = [args.command + ' --seed %d' % seed + ' --name %s' % args.name]
    screen.send_commands(commands)
예제 #6
0
parser.add_argument('--cores', type=str, default='44-54')
parser.add_argument('--logdir',
                    help='Directory for logs',
                    type=str,
                    default='./logs')
parser.add_argument('--env',
                    help='Gym environment id',
                    type=str,
                    default='RBFMinigolf-v0')
parser.add_argument('--actor_lr', type=float, default=1.17e-3)
parser.add_argument('--critic_lr', type=float, default=2.49e-4)
parser.add_argument('--std', type=float, default=0.01)
parser.add_argument('--init', type=float, default=1.)
parser.add_argument('--horizon', type=int, default=20)
parser.add_argument('--gamma', type=float, default=0.99)
parser.add_argument('--epochs', type=int, default=700)
parser.add_argument('--steps_per_epoch', type=int, default=10000)
parser.add_argument('--test', type=int, default=100)
parser.add_argument('--expname', type=str, default='minigolf')
parser.add_argument('--policy', type=str, default=None)

args = parser.parse_args()

for seed in args.seeds:
    screen = su.Screen(args.expname + str(seed), initialize=True)
    commands = 'conda activate py36 && taskset -ca %s python sp_run.py --seed %d --logdir %s --env %s --actor_lr %f --critic_lr %f --std %f --init %f --horizon %d --gamma %f --epochs %d --steps_per_epoch %d --test %d --expname %s --policy %s' % (
        args.cores, seed, args.logdir, args.env, args.actor_lr, args.critic_lr,
        args.std, args.init, args.horizon, args.gamma, args.epochs,
        args.steps_per_epoch, args.test, args.expname, args.policy)
    screen.send_commands(commands)
예제 #7
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 17 23:18:56 2019

@author: matteo
"""

import argparse
import screenutils as su

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--command', help='Command', type=str, default='echo hello')
parser.add_argument('--name', help='Name', type=str, default='hello')
parser.add_argument('--nseeds', help='Number of seeds', type=int, default=5)
args = parser.parse_args()

screen = su.Screen(args.name, create=True)

seeds = [507, 160, 649, 144, 233]

commands = [args.command + ' --seed %d' % seed + ' --name %s' % args.name for seed in seeds[:args.nseeds]]

screen.send_commands(commands)
예제 #8
0
def ScreenExist(screename):

    s = screenutils.Screen(screename)

    return s.exists
예제 #9
0
def KillScreenSession(screename):

    s = screenutils.Screen(screename)
    if s.exists:
        s.kill()
예제 #10
0
def OpenScreenSession(screename):

    s = screenutils.Screen(screename, True)

    os.system("screen -r {0}".format(s.id))