2 from configparser import SafeConfigParser
8 from optparse import OptionParser, OptionGroup
10 from pprint import pprint, pformat
12 from io import StringIO
17 import urllib.request, urllib.parse, urllib.error
18 import urllib.request, urllib.error, urllib.parse
20 from zipfile import ZipFile
24 if not 'DJANGO_SETTINGS_MODULE' in os.environ:
25 os.environ['DJANGO_SETTINGS_MODULE'] = 'htsworkflow.settings'
28 from htsworkflow.util import api
29 from htsworkflow.util.rdfhelp import \
37 from htsworkflow.submission.daf import get_submission_uri
38 from htsworkflow.submission.results import ResultMap
39 from htsworkflow.submission.geo import GEOSubmission
40 from htsworkflow.submission.condorfastq import CondorFastqExtract
42 logger = logging.getLogger(__name__)
44 def main(cmdline=None):
45 parser = make_parser()
46 opts, args = parser.parse_args(cmdline)
50 logging.basicConfig(level = logging.DEBUG )
52 logging.basicConfig(level = logging.INFO )
54 logging.basicConfig(level = logging.WARNING )
56 apidata = api.make_auth_from_opts(opts, parser)
58 model = get_model(opts.model, opts.db_path)
61 mapper = GEOSubmission(opts.name, model, host=opts.host)
62 submission_uri = get_submission_uri(opts.name)
65 if opts.load_rdf is not None:
66 if submission_uri is None:
67 parser.error("Please specify the submission name")
68 load_into_model(model, 'turtle', opts.load_rdf, submission_uri)
73 results.add_results_from_file(a)
75 logger.warn("File %s doesn't exist.", a)
77 if opts.make_tree_from is not None:
78 results.make_tree_from(opts.make_tree_from)
81 logger.info("Building fastq extraction scripts")
82 flowcells = os.path.join(opts.sequence, 'flowcells')
83 extractor = CondorFastqExtract(opts.host, flowcells,
86 extractor.create_scripts(results)
88 if opts.scan_submission:
90 parser.error("Please define a submission name")
91 mapper.scan_submission_dirs(results)
94 mapper.make_soft(results)
97 sparql_query(model, opts.sparql)
100 writer = get_serializer()
101 print(writer.serialize_model_to_string(model))
105 parser = OptionParser()
107 model = OptionGroup(parser, 'model')
108 model.add_option('--name', help="Set submission name")
109 model.add_option('--db-path', default=None,
110 help="set rdf database path")
111 model.add_option('--model', default=None,
112 help="Load model database")
113 model.add_option('--load-rdf', default=None,
114 help="load rdf statements into model")
115 model.add_option('--sparql', default=None, help="execute sparql query")
116 model.add_option('--print-rdf', action="store_true", default=False,
117 help="print ending model state")
118 parser.add_option_group(model)
120 commands = OptionGroup(parser, 'commands')
121 commands.add_option('--make-tree-from',
122 help="create directories & link data files",
124 commands.add_option('--fastq', default=False, action="store_true",
125 help="generate scripts for making fastq files")
126 commands.add_option('--scan-submission', default=False, action="store_true",
127 help="Import metadata for submission into our model")
128 commands.add_option('--make-soft', help='make the soft file', default=False,
131 parser.add_option_group(commands)
133 parser.add_option('--force', default=False, action="store_true",
134 help="Force regenerating fastqs")
135 parser.add_option('--daf', default=None, help='specify daf name')
136 parser.add_option('--library-url', default=None,
137 help="specify an alternate source for library information")
139 parser.add_option('--verbose', default=False, action="store_true",
140 help='verbose logging')
141 parser.add_option('--debug', default=False, action="store_true",
142 help='debug logging')
144 api.add_auth_options(parser)
149 if __name__ == "__main__":