Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
inputs['spec_name'] = args.experiment+'-'+'-'.join([ r.split('.')[0] for r in args.replicates])
title_root = 'dx_long_rna_seq_'
name_root = 'ENCODE Long RNA Seq: '
desc = 'The ENCODE RNA Seq pipeline for long RNAs'
if args.paired:
title_root = title_root + '_paired_end '
name_root = name_root + '(paired-end) '
inputs['stranded'] = True
else:
title_root = title_root + '_single_end '
name_root = name_root + '(single-end) '
inputs['stranded'] = False
if args.export:
project_id = dxpy.find_one_project(name=ENCODE_PUBLIC_PROJECT, name_mode='exact', return_handler=False)['id']
wf = dxpy.new_dxworkflow(title=title_root,
name=name_root,
description=desc,
folder=PUBLIC_FOLDER,
project=project_id)
else:
project_id = project.get_id()
wf = dxpy.new_dxworkflow(title=title_root+inputs['spec_name'],
name=name_root+inputs['spec_name'],
description=desc+' for experiment:' + args.experiment,
folder='/'+args.experiment,
project=project.get_id())
populate_workflow(wf, replicates, args.experiment, inputs, project.id, args.export)
#TODO - run the workflow automatically
:type perm_level: string
:param include_current_proj: Indicate whether the current project's name should be a potential result
:type include_current_proj: boolean
:param visibility: Visibility with which to restrict the completion (one of "either", "visible", or "hidden") (default behavior is dependent on *text*)
Returns a list of matches to the text and restricted by the
requested parameters.
'''
colon_pos = get_last_pos_of_char(':', text)
slash_pos = get_last_pos_of_char('/', text)
delim_pos = max(colon_pos, slash_pos)
# First get projects if necessary
matches = []
if expected == 'project' and colon_pos > 0 and colon_pos == len(text) - 1:
if dxpy.find_one_project(zero_ok=True, name=text[:colon_pos]) is not None:
return [text + " "]
if colon_pos < 0 and slash_pos < 0:
# Might be tab-completing a project, but don't ever include
# whatever's set as dxpy.WORKSPACE_ID unless expected == "project"
# Also, don't bother if text=="" and expected is NOT "project"
# Also, add space if expected == "project"
if text != "" or expected == 'project':
results = dxpy.find_projects(describe=True, level=perm_level)
if not include_current_proj:
results = [r for r in results if r['id'] != dxpy.WORKSPACE_ID]
matches += [escape_colon(r['describe']['name'])+':' for r in results if r['describe']['name'].startswith(text)]
if expected == 'project':
return matches
def resolve_project(identifier, privs='r'):
project = dxpy.find_one_project(name=identifier, level='VIEW', name_mode='exact', return_handler=True, zero_ok=True)
if project == None:
try:
project = dxpy.get_handler(identifier)
except:
logging.error('Could not find a unique project with name or id %s' %(identifier))
raise ValueError(identifier)
logging.debug('Project %s access level is %s' %(project.name, project.describe()['level']))
if privs == 'w' and project.describe()['level'] == 'VIEW':
logging.error('Output project %s is read-only' %(identifier))
raise ValueError(identifier)
return project
if proj_name is not None:
print('Your current working directory is ' + proj_name + ':' + dxpy.config.get('DX_CLI_WD', '/'))
while True:
print('Pick an option to find input data:')
try:
opt_num = pick(['List and choose from available data in the current project',
'List and choose from available data in the DNAnexus Reference Genomes project',
'Select another project to list and choose available data',
'Select an output from a previously-run job (current project only)',
'Return to original prompt (specify an ID or path directly)'])
except KeyboardInterrupt:
opt_num = 4
if opt_num == 0:
query_project = dxpy.WORKSPACE_ID
elif opt_num == 1:
query_project = dxpy.find_one_project(name="Reference Genome Files", public=True, billed_to="org-dnanexus", level="VIEW")['id']
elif opt_num == 2:
project_generator = dxpy.find_projects(level='VIEW', describe=True, explicit_perms=True)
print('\nProjects to choose from:')
query_project = paginate_and_pick(project_generator, (lambda result: result['describe']['name']))['id']
if opt_num in range(3):
result_generator = dxpy.find_data_objects(classname=in_class,
typename=param_desc.get('type'),
describe=dict(fields=get_ls_l_desc_fields()),
project=query_project)
print('\nAvailable data:')
result_choice = paginate_and_pick(result_generator,
(lambda result: get_ls_l_desc(result['describe'])))
if result_choice == 'none found':
print('No compatible data found')
continue
elif result_choice == 'none picked':
def resolve_project(identifier, privs='r'):
project = dxpy.find_one_project(
name=identifier,
level='VIEW',
name_mode='exact',
return_handler=True,
zero_ok=True)
if project is None:
try:
project = dxpy.get_handler(identifier)
except:
logging.error(
'Could not find a unique project with name or id %s'
% (identifier))
raise ValueError(identifier)
logging.debug(
'Project %s access level is %s'
% (project.name, project.describe()['level']))
def resolve_project(identifier, privs='r'):
logger.debug("In resolve_project with identifier %s" % (identifier))
project = dxpy.find_one_project(
name=identifier, level='VIEW', name_mode='exact',
return_handler=True, zero_ok=True)
if project is None:
try:
project = dxpy.get_handler(identifier)
except:
logger.error(
'Could not find a unique project with name or id %s'
% (identifier))
raise ValueError(identifier)
logger.debug(
'Project %s access level is %s'
% (project.name, project.describe()['level']))
if privs == 'w' and project.describe()['level'] == 'VIEW':
logger.error('Output project %s is read-only' % (identifier))
raise ValueError(identifier)