def circle_ci_survey(survey_tags,survey_repo=None,delete=True,survey_file="survey.tsv"): '''circle_ci_survey checks format of surveys.tsv file :param survey_tags: list of survey folders (exp_id variables) to test :param survey_repo: folder with experiments to test. If None, will pull from master branch :param delete: delete experiment folders when finished ''' if isinstance(survey_tags,str): survey_tags = [survey_tags] # If we are running on circle, only test changed experiments if "CIRCLE_BRANCH" in os.environ.keys(): print "DETECTED CONTINUOUS INTEGRATION ENVIRONMENT..." survey_repo = os.getcwd() master_folder = os.path.abspath(os.path.join(survey_repo,"master")) if not os.path.exists(master_folder): os.mkdir(master_folder) download_repo("surveys",master_folder) changed_surveys = [os.path.split(x)[-1] for x in find_changed(survey_repo,master_folder,repo_type="surveys")] changed_surveys = [e for e in survey_tags if e in changed_surveys] if len(changed_surveys) > 0: validate_surveys(survey_tags=changed_surveys,survey_repo=survey_repo,survey_file=survey_file) else: print "Skipping surveys %s, no changes detected." %(",".join(survey_tags))
def circle_ci_survey(survey_tags,web_folder,survey_repo=None,delete=True,survey_file="survey.tsv"): '''circle_ci_survey checks format of surveys.tsv file :param survey_tags: list of survey folders (exp_id variables) to test :param web folder: folder with generated survey web :param survey_repo: folder with experiments to test. If None, will pull from master branch :param delete: delete experiment folders when finished ''' if isinstance(survey_tags,str): survey_tags = [survey_tags] # If we are running on circle, only test changed experiments if "CIRCLE_BRANCH" in os.environ.keys(): print "DETECTED CONTINUOUS INTEGRATION ENVIRONMENT..." survey_repo = os.getcwd() master_folder = os.path.abspath(os.path.join(survey_repo,"master")) if not os.path.exists(master_folder): os.mkdir(master_folder) download_repo("surveys",master_folder) changed_surveys = [os.path.split(x)[-1] for x in find_changed(survey_repo,master_folder,repo_type="surveys")] changed_surveys = [e for e in survey_tags if e in changed_surveys] if len(changed_surveys) > 0: validate_surveys(survey_tags=changed_surveys,survey_repo=survey_repo,survey_file=survey_file) generate_experiment_web(web_folder,survey_folder=os.path.abspath(survey_repo)) survey_robot_web(web_folder,survey_tags=changed_surveys) else: print "Skipping surveys %s, no changes detected." %(",".join(survey_tags))
def circle_ci_test(experiment_tags,web_folder,experiment_repo=None,delete=True,pause_time=500): '''circle_ci_test Deploy experiment testing robot, requires generation of web folder, and can be deleted on finish. :param experiment_tags: list of experiment folders (exp_id variables) to test :param web_folder: output web folder to generate experiment web. Will be created if does not exist :param experiment_repo: folder with experiments to test. If None, will pull from master branch :param delete: delete experiment folders when finished :param pause_time: The time to pause between experiments, in addition to post trial times ''' if isinstance(experiment_tags,str): experiment_tags = [experiment_tags] # If we are running on circle, only test changed experiments if "CIRCLE_BRANCH" in os.environ.keys(): print "DETECTED CONTINUOUS INTEGRATION ENVIRONMENT..." master_folder = os.path.abspath(os.path.join(os.getcwd(),"master")) if not os.path.exists(master_folder): os.mkdir(master_folder) download_repo("experiments",master_folder) changed_experiments = [os.path.split(x)[-1] for x in find_changed(os.getcwd(),master_folder)] changed_experiments = [e for e in experiment_tags if e in changed_experiments] if len(changed_experiments) > 0: generate_experiment_web(web_folder,experiment_folder=os.path.abspath(experiment_repo),make_surveys=False) experiment_robot_web(web_folder,experiment_tags=changed_experiments) else: print "Skipping experiments %s, no changes detected." %(",".join(experiment_tags))
def circle_ci_test(experiment_tags,web_folder,experiment_repo=None,delete=True,pause_time=500,repo_type="experiments"): '''circle_ci_test Deploy experiment testing robot, requires generation of web folder, and can be deleted on finish. :param experiment_tags: list of experiment folders (exp_id variables) to test :param web_folder: output web folder to generate experiment web. Will be created if does not exist :param experiment_repo: folder with experiments to test. If None, will pull from master branch :param delete: delete experiment folders when finished :param pause_time: The time to pause between experiments, in addition to post trial times ''' if isinstance(experiment_tags,str): experiment_tags = [experiment_tags] # If we are running on circle, only test changed experiments if "CIRCLE_BRANCH" in os.environ.keys(): print "DETECTED CONTINUOUS INTEGRATION ENVIRONMENT..." master_folder = os.path.abspath(os.path.join(os.getcwd(),"master")) if not os.path.exists(master_folder): os.mkdir(master_folder) download_repo(repo_type,master_folder) changed_experiments = [os.path.split(x)[-1] for x in find_changed(os.getcwd(),master_folder)] changed_experiments = [e for e in experiment_tags if e in changed_experiments] if len(changed_experiments) > 0: generate_experiment_web(web_folder,experiment_folder=os.path.abspath(experiment_repo),make_surveys=False) experiment_robot_web(web_folder,experiment_tags=changed_experiments) else: print "Skipping %s %s, no changes detected." %(repo_type,",".join(experiment_tags))
is_temp_working_dir = True working_dir = tempfile.mkdtemp() # We will set up the repo downloads, etc, in a temporary place experiments = args.experiments.split(",") # Download the missing repos to working directory battery_repo='battery' experiment_repo='experiments' survey_repo='surveys' game_repo='games' print('Downloading expfactory repos...') for repo in (battery_repo, experiment_repo, survey_repo, game_repo): folder = "%s/%s" %(working_dir,repo) if not (os.path.isdir(folder)): download_repo(repo_type=repo, destination=folder) # Generate battery with the experiment(s) print('Generating base...') base = generate_base(battery_dest=battery_dest, tasks=experiments, experiment_repo="%s/%s" %(working_dir,experiment_repo), survey_repo="%s/%s" %(working_dir,survey_repo), game_repo="%s/%s" %(working_dir,game_repo), add_experiments=True, add_surveys=False, add_games=False, battery_repo="%s/%s" %(working_dir,battery_repo)) # Customize the battery custom_variables = dict()