Dear all,

We have a modified Galaxy server with tools for virtual screening. You can
access is at http://lisis.cs.ucy.ac.cy.

We created a composite datatype (auto_primary_file) to handle PDBQT files
for proteins and their config file requested by AutoDock Vina, in simple
words is a composite datatype consisted of two files, a pdbqt file and a
text file.

We have the following problems:

   1. Uploading the files needed to create such a composite datatype via
   the Upload Tool, stacks in upload phase, as shown in the following figure
   http://prntscr.com/xbosn
      1. As you can see in the figure, uploading individual files works
      2. In this figure http://prntscr.com/xbp6k you can see the upload
      options for this composite datatype.
   2. Uploading composite datatypes within a data library does not provide
   the same functionality as the Upload Tool.

Regarding problem 1 what do you think is the underlying problem?

Following is the source code of this composite datatype class:

class PDBQT_Protein(Html):
    """PDBQT Protein files, ASCII protein information files."""
    MetadataElement(name = "base_name", desc = "Base name for all
transformed versions of this PDBQT protein dataset", default = 'protein',
    readonly = False, set_in_upload = True)

    composite_type = 'auto_primary_file'
    allow_datatype_change = False
    file_ext = 'pdbqt_protein'

    def __init__(self, **kwd):
        Text.__init__(self, **kwd)
        self.add_composite_file('%s.pdbqt', description = 'PDBQT Protein
File', substitute_name_with_metadata = 'base_name', mimetype =
'text/plain', is_binary = False)
        self.add_composite_file('%s_config.txt', description = 'PDBQT
Config File', substitute_name_with_metadata = 'base_name', mimetype =
'text/plain', is_binary = False)

    def generate_primary_file(self, dataset = None):
        if dataset.metadata.base_name == "protein" and \
           dataset.metadata.base_name != dataset.name:
            dataset.metadata.base_name = dataset.name
        rval = ['<html><head><title>PDBQT Protein Galaxy/LiSIs Composite
Dataset</title></head>']
        rval.append('<body><div>This %s composite dataset is composed of
the following files:<ul>' % (dataset.metadata.base_name))
        for composite_name, composite_file in
self.get_composite_files(dataset = dataset).iteritems():
            fn = composite_name
            opt_text = ''
            if composite_file.optional:
                opt_text = ' (optional)'
            if composite_file.get('description'):
                rval.append('<li><a href="%s">%s (%s)</a>%s</li>' % (fn,
fn, composite_file.get('description'), opt_text))
            else:
                rval.append('<li><a href="%s">%s</a>%s</li>' % (fn, fn,
opt_text))
        rval.append('</ul></div></body></html>')
        return "\n".join(rval)

    def regenerate_primary_file(self, dataset):
        """
        cannot do this until we are setting metadata
        """
        bn = dataset.metadata.base_name
        efp = dataset.extra_files_path
        flist = os.listdir(efp)
        rval = ['<html><head><title>PDBQT Protein Galaxy/LiSIs Composite
Dataset</title></head>']
        rval.append('<body><div>This %s composite dataset is composed of
the following files:<ul>' % (bn))
        for i, fname in enumerate(flist):
            sfname = os.path.split(fname)[-1]
            rval.append('<li><a href="%s">%s</a></li>' % (sfname, sfname))
        rval.append('</ul></div></body></html>')
        f = file(dataset.file_name, 'w')
        f.write("\n".join(rval))
        f.write('\n')
        f.close()

    def set_meta(self, dataset, **kwd):
        """
        Set metadata...
        """
        Text.set_meta(self, dataset, **kwd)
        if dataset.metadata.base_name == "protein" and \
           dataset.metadata.base_name != dataset.name:
            dataset.metadata.base_name = dataset.name
            log.debug('@@@ PDBQT_Protein set_meta changed
dataset.metadata.base_name to: %s' % (dataset.metadata.base_name))
        if kwd.get('overwrite') == False:
            log.debug('@@@ PDBQT_Protein set_meta called with overwrite =
False')
            return True
        try:
            efp = dataset.extra_files_path
        except:
            log.debug('@@@ PDBQT_Protein set_meta failed %s - dataset %s
has no extra_files_path ?' % (sys.exc_info()[0], dataset.name))
            return False
        try:
            flist = os.listdir(efp)
        except:
            log.debug('@@@ PDBQT_Protein set_meta failed %s - dataset %s
has no extra_files_path ?' % (sys.exc_info()[0], dataset.name))
            return False
        if len(flist) == 0:
            log.debug('@@@ PDBQT_Protein set_meta failed - %s
extra_files_path %s is empty?' % (dataset.name, efp))
            return False
        self.regenerate_primary_file(dataset)
        if not dataset.info:
            dataset.info = 'Galaxy/LiSIs %s PDBQT Protein datatype object'
% (dataset.metadata.base_name)
        if not dataset.blurb:
            dataset.blurb = 'Composite file - %s PDBQT Protein Galaxy/LiSIs
datatype' % (dataset.metadata.base_name)
        return True


Thanks in advance,
Christos

-- 

Christos Kannas
Researcher
Ph.D Student

e-Health Laboratory <http://www.medinfo.cs.ucy.ac.cy/>
kannas.chris...@ucy.ac.cy
kannas.chris...@cs.ucy.ac.cy
chriskan...@gmail.com

Mob: (+357) 99530608
___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/

Reply via email to