5 from ConfigParser import SafeConfigParser
11 from optparse import OptionParser, OptionGroup
13 from pprint import pprint, pformat
15 from StringIO import StringIO
23 from zipfile import ZipFile
27 if not 'DJANGO_SETTINGS_MODULE' in os.environ:
28 os.environ['DJANGO_SETTINGS_MODULE'] = 'htsworkflow.settings'
31 from htsworkflow.util import api
32 from htsworkflow.util.rdfhelp import \
40 from htsworkflow.submission.daf import get_submission_uri
41 from htsworkflow.submission.results import ResultMap
42 from htsworkflow.submission.trackhub import TrackHubSubmission
43 from htsworkflow.submission.condorfastq import CondorFastqExtract
45 logger = logging.getLogger(__name__)
47 def main(cmdline=None):
48 parser = make_parser()
49 opts, args = parser.parse_args(cmdline)
53 logging.basicConfig(level = logging.DEBUG )
55 logging.basicConfig(level = logging.INFO )
57 logging.basicConfig(level = logging.WARNING )
59 apidata = api.make_auth_from_opts(opts, parser)
61 model = get_model(opts.model, opts.db_path)
64 mapper = TrackHubSubmission(opts.name, model, host=opts.host)
65 submission_uri = get_submission_uri(opts.name)
68 if opts.load_rdf is not None:
69 if submission_uri is None:
70 parser.error("Please specify the submission name")
71 load_into_model(model, 'turtle', opts.load_rdf, submission_uri)
76 results.add_results_from_file(a)
78 logger.warn("File %s doesn't exist.", a)
80 if opts.make_link_tree_from is not None:
81 results.make_tree_from(opts.make_tree_from, link=True)
83 if opts.copy_tree_from is not None:
84 results.make_tree_from(opts.make_tree_from, link=False)
87 logger.info("Building fastq extraction scripts")
88 flowcells = os.path.join(opts.sequence, 'flowcells')
89 extractor = CondorFastqExtract(opts.host, flowcells,
92 extractor.create_scripts(results)
94 if opts.scan_submission:
96 parser.error("Please define a submission name")
97 mapper.scan_submission_dirs(results)
103 sparql_query(model, opts.sparql)
106 writer = get_serializer()
107 print writer.serialize_model_to_string(model)
110 def make_hub(results):
111 trackdb = mapper.make_hub(results)
112 manifest = mapper.make_manifest(results)
114 trackstream = sys.stdout
115 #with open('trackDb.txt', 'w') as trackstream:
116 trackstream.write(trackdb)
118 #with open('manifest.txt', 'w') as mainifeststream:
119 manifeststream = sys.stdout
120 mainifeststream.write(mainifest)
123 parser = OptionParser()
125 model = OptionGroup(parser, 'model')
126 model.add_option('--name', help="Set submission name")
127 model.add_option('--db-path', default=None,
128 help="set rdf database path")
129 model.add_option('--model', default=None,
130 help="Load model database")
131 model.add_option('--load-rdf', default=None,
132 help="load rdf statements into model")
133 model.add_option('--sparql', default=None, help="execute sparql query")
134 model.add_option('--print-rdf', action="store_true", default=False,
135 help="print ending model state")
136 parser.add_option_group(model)
138 commands = OptionGroup(parser, 'commands')
139 commands.add_option('--make-link-tree-from',
140 help="create directories & link data files",
142 commands.add_option('--copy-tree-from',
143 help="create directories & copy data files",
145 commands.add_option('--fastq', default=False, action="store_true",
146 help="generate scripts for making fastq files")
147 commands.add_option('--scan-submission', default=False, action="store_true",
148 help="Import metadata for submission into our model")
149 commands.add_option('--make-hub', help='make the hub file', default=False,
152 parser.add_option_group(commands)
154 parser.add_option('--force', default=False, action="store_true",
155 help="Force regenerating fastqs")
156 parser.add_option('--daf', default=None, help='specify daf name')
157 parser.add_option('--library-url', default=None,
158 help="specify an alternate source for library information")
160 parser.add_option('--verbose', default=False, action="store_true",
161 help='verbose logging')
162 parser.add_option('--debug', default=False, action="store_true",
163 help='debug logging')
165 api.add_auth_options(parser)
169 if __name__ == "__main__":