PageRenderTime 23ms CodeModel.GetById 18ms app.highlight 4ms RepoModel.GetById 0ms app.codeStats 0ms

/tools/maf/maf_to_bed_code.py

https://bitbucket.org/h_morita_dbcls/galaxy-central
Python | 59 lines | 58 code | 1 blank | 0 comment | 4 complexity | ea994634e481a618c58d30c058bf67d3 MD5 | raw file
 1import pkg_resources; pkg_resources.require( "bx-python" )
 2from bx.align import maf
 3from galaxy import datatypes, config, jobs 
 4from shutil import move
 5
 6def exec_after_process(app, inp_data, out_data, param_dict, tool, stdout, stderr):
 7    output_data = out_data.items()[0][1]
 8    history = output_data.history
 9    if history == None:
10        print "unknown history!"
11        return
12    new_stdout = ""
13    split_stdout = stdout.split("\n")
14    basic_name = output_data.name
15    output_data_list = []
16    for line in split_stdout:
17        if line.startswith("#FILE1"):
18            fields = line.split("\t")
19            dbkey = fields[1]
20            filepath = fields[2]
21            output_data.dbkey = dbkey
22            output_data.name = basic_name + " (" + dbkey + ")"
23            app.model.context.add( output_data )
24            app.model.context.flush()
25            output_data_list.append(output_data)
26        elif line.startswith("#FILE"):
27            fields = line.split("\t")
28            dbkey = fields[1]
29            filepath = fields[2]
30            newdata = app.model.HistoryDatasetAssociation( create_dataset = True, sa_session = app.model.context )
31            newdata.set_size()
32            newdata.extension = "bed"
33            newdata.name = basic_name + " (" + dbkey + ")"
34            app.model.context.add( newdata )
35            app.model.context.flush()
36            history.add_dataset( newdata )
37            app.security_agent.copy_dataset_permissions( output_data.dataset, newdata.dataset )
38            app.model.context.add( history )
39            app.model.context.flush()
40            try:
41                move(filepath,newdata.file_name)
42                newdata.info = newdata.name
43                newdata.state = newdata.states.OK
44            except:
45                newdata.info = "The requested file is missing from the system."
46                newdata.state = newdata.states.ERROR
47            newdata.dbkey = dbkey
48            newdata.init_meta()
49            newdata.set_meta()
50            newdata.set_peek()
51            app.model.context.flush()
52            output_data_list.append(newdata)
53        else:
54            new_stdout = new_stdout + line
55        for data in output_data_list:
56            if data.state == data.states.OK:
57                data.info = new_stdout
58                app.model.context.add( data )
59                app.model.context.flush()