def suggest_analysis_layout(solid_runs): """Generate a bash script to build the analysis directory scheme Given a set of SolidRuns, print a set of script commands for running the build_analysis_dir.py program to create and populate the analysis directories. The script can be edited before being executed by the user. Arguments: solid_runs: a list of SolidRun objects. """ print("#!/bin/sh\n#\n# Script commands to build analysis directory structure") for run in solid_runs: build_analysis_dir_cmd = 'build_analysis_dir.py' top_dir = os.path.abspath(os.path.join(os.getcwd(),os.path.basename(run.run_dir))) for sample in run.samples: for project in sample.projects: # Create one experiment per project cmd_line = [] expt = Experiment.Experiment() expt.name = project.getProjectName() expt.type = "expt" expt.sample = project.getSample().name expt.library = project.getLibraryNamePattern() # Print the arguments for the layout cmd_line.extend((build_analysis_dir_cmd, "--top-dir=%s_analysis" % top_dir, "--link=absolute", "--naming-scheme=partial")) cmd_line.append(expt.describe()) cmd_line.append(run.run_dir) print("#\n%s" % (' \\\n').join(cmd_line))
print " each experiment." print "" print "For each experiment defined on the command line, a subdirectory" print "called '<name>_<expt_type>' (e.g. 'PB_ChIP-seq' - if no <expt_type>" print "was supplied then just the name is used) will be made, and links to" print "each of the primary data files." sys.exit(1) # Solid run directory solid_run_dir = sys.argv[-1] if not os.path.isdir(solid_run_dir): logging.error("Solid run directory '%s' not found" % solid_run_dir) sys.exit(1) # Set up experiment list expts = Experiment.ExperimentList(solid_run_dir=solid_run_dir) # Process command line arguments for arg in sys.argv[1:-1]: # Process command line arguments if arg.startswith('--name='): expt_name = arg.split('=')[1] expt = expts.addExperiment(expt_name) elif arg.startswith('--type='): expt = expts.getLastExperiment() if expt is None: logging.error("No experiment defined for --type argument") sys.exit(1) if not expt.type: expt.type = arg.split('=')[1] else: