Mercurial > repos > xuebing > sharplabtool
diff tools/maf/maf_to_bed_code.py @ 0:9071e359b9a3
Uploaded
author | xuebing |
---|---|
date | Fri, 09 Mar 2012 19:37:19 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/maf/maf_to_bed_code.py Fri Mar 09 19:37:19 2012 -0500 @@ -0,0 +1,59 @@ +import pkg_resources; pkg_resources.require( "bx-python" ) +from bx.align import maf +from galaxy import datatypes, config, jobs +from shutil import move + +def exec_after_process(app, inp_data, out_data, param_dict, tool, stdout, stderr): + output_data = out_data.items()[0][1] + history = output_data.history + if history == None: + print "unknown history!" + return + new_stdout = "" + split_stdout = stdout.split("\n") + basic_name = output_data.name + output_data_list = [] + for line in split_stdout: + if line.startswith("#FILE1"): + fields = line.split("\t") + dbkey = fields[1] + filepath = fields[2] + output_data.dbkey = dbkey + output_data.name = basic_name + " (" + dbkey + ")" + app.model.context.add( output_data ) + app.model.context.flush() + output_data_list.append(output_data) + elif line.startswith("#FILE"): + fields = line.split("\t") + dbkey = fields[1] + filepath = fields[2] + newdata = app.model.HistoryDatasetAssociation( create_dataset = True, sa_session = app.model.context ) + newdata.set_size() + newdata.extension = "bed" + newdata.name = basic_name + " (" + dbkey + ")" + app.model.context.add( newdata ) + app.model.context.flush() + history.add_dataset( newdata ) + app.security_agent.copy_dataset_permissions( output_data.dataset, newdata.dataset ) + app.model.context.add( history ) + app.model.context.flush() + try: + move(filepath,newdata.file_name) + newdata.info = newdata.name + newdata.state = newdata.states.OK + except: + newdata.info = "The requested file is missing from the system." + newdata.state = newdata.states.ERROR + newdata.dbkey = dbkey + newdata.init_meta() + newdata.set_meta() + newdata.set_peek() + app.model.context.flush() + output_data_list.append(newdata) + else: + new_stdout = new_stdout + line + for data in output_data_list: + if data.state == data.states.OK: + data.info = new_stdout + app.model.context.add( data ) + app.model.context.flush()