Thank you Carl for the excellent write-up. It could serve as a visualization plugin tutorial.
However, I am still not able to get the visualization icon to appear, see the attachment 2.
I feel if I get the icon to show it will all come together.
A couple questions followed by file dumps and startup info
1. my /api/datatypes/mapping dump it shows registry instead of binary
near the top
"galaxy.datatypes.genetics.RexpBase": {"galaxy.datatypes.images.Html": true, "galaxy.datatypes.data.Data": true, "galaxy.datatypes.data.Text": true, "galaxy.datatypes.genetics.RexpBase": true}, "galaxy.datatypes.registry.MDA_zip": {"galaxy.datatypes.registry.Binary": true, "galaxy.datatypes.data.Data": true, "galaxy.datatypes.binary.Binary": true, "galaxy.datatypes.registry.MDA_zip": true},
near the bottom in lower case
"galaxy.datatypes.registry.Text", "mda_zip": "galaxy.datatypes.registry.MDA_zip", "chips": "galaxy.datatypes.registry.Text", "gg": "galaxy.datatypes.genetics.GenomeGraphs", "syco": "galaxy.datatypes.registry.Text",
2. I also added a snapshot of the visualization/tool/ sub-directories. It shows my extension because I have a format=type in the tool.xml output file defition but shows file type 'binary' at the bottom of the file history. Is this correct, or should it be my extension type there?
Comment -- It appears the only link between the file extension and the visualization plugin is via the test line in the /conf/toolxml file. Is that correct?
My xml in my visualize directory /tool/config/tool.xml (formatting is messed up here) attachment 1
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE visualization SYSTEM "../../visualization.dtd">
<visualization name="MDAheatmap">
<data_sources>
<data_source>
<model_class>HistoryDatasetAssociation</model_class>
<test type="isinstance" test_attr="datatype" result_type="datatype">binary.MDA_zip</test>
<to_param param_attr="id">dataset_id</to_param>
</data_source>
</data_sources>
<params>
<param type="dataset" var_name_in_template="hda" required="true">dataset_id</param>
</params>
<entry_point entry_point_type="mako">MDAheatmap.mako</entry_point>
</visualization>
My templates/tool.mako file (hello world)
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>
A Small Hello
</TITLE>
</HEAD>
<BODY>
<H1>Hi</H1>
<P>This is very minimal "hello world" HTML document.</P>
</BODY>
</HTML>
startup info seems successful
galaxy.web.base.pluginframework INFO 2015-12-14 13:20:09,631 VisualizationsRegistry, loaded plugin: MDAheatmap
x.x.10.42 - - [14/Dec/2015:14:11:50 -0400] "PUT /api/histories/a799d38679e985db/contents/datasets/fb85969571388350 HTTP/1.1" 200 - "http://xx.xx.10.4:8082/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"
no skipping error and no other apparent errors in startup
here is my Datatypes.conf.xml 2 additions
<datatype extension="MDA_zip" type="galaxy.datatypes.binary:MDA_zip" mimetype="application/octet-stream" display_in_upload="true" subclass="False">
and sniffer
<sniffer type="galaxy.datatypes.binary:MDA_zip"/>
my binary.py addition
class MDA_zip( Binary ):
"""Class describing an MDA Heatmap binary zip file"""
file_ext = "MDA_zip"
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary MDA_zip sequence file"
dataset.blurb = nice_size( dataset.get_size() )
else:
dataset.peek = 'file MDA_zip does not exist'
dataset.blurb = 'file MDA_zip purged from disk'
def display_peek( self, dataset ):
try:
return dataset.peek
except:
return "Binary MDA_zip heatmap file (%s)" % ( nice_size( dataset.get_size() ) )
Binary.register_sniffable_binary_format("MDA_zip","MDA_zip",MDA_zip)
my dataset.py addition
class MDA_zipDataProvider( base.DataProvider ):
def __init__( self, dataset, **kwards ):
self.dataset = json.loads( "".join( dataset.readlines() ))
"""
def __init__( self, dataset, **kwards ):
raise NotImplementedError()
super( MDA_zipDataProvider, self ).__init__( dataset, **kwargs )
My tool in tools dir
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE visualization SYSTEM "../../visualization.dtd">
<tool id="MDAheatmap" name="MDA HeatMap" version="1.3.0">
<description>Display HeatMap generated by MDAnderson HeatMap tools</description>
<command interpreter="python">MDAheatmap.py $input $out_file </command>
<inputs>
<param format="text" name="input" type="data" label="doesnt_matter" help="input any file and a MDA zipped file pulled off disk"/>
</inputs>
<outputs>
<data format="MDA_zip" name="out_file"/>
</outputs>
</tool>
Thank you Eric,But I want to be clear after spending 5 days, reading many Galaxy wiki links, looking at samples, and with help from others trying to get this to work. I have written many tools but never tried to display a unique datatype before.Below is a series of questions and steps I followed trying the suggestions from early posts.My goals are:-- To get the visualization icon to show in the bottom left of my history output file?
-- click the visualization icon to display my data (that I will process to display) inside Galaxy.The steps below are in order of urgency:)Thank you for you patience.1. /Config/plugin/visualization is where code goes to have a Galaxy internal module display a user defined data type? -- mine is binaryWithout getting to in the weeds under this directory I have a mydatatype dir with subdirectories /config w xml, /static w .js, /templates w mako made of html2. Under /lib/galaxy/datatypes/display_applications I tried the same approach with no success. Is this where code goes for external displays that use get and post reside?3. which if any of 1or2 above use the Tools/Visualization directory. Is that the convention for the return of a Get or Post external displays?4. I create my own datatype in data_config_type.xml with a <datatype> tag5. in data_config_type.xml you only use the <display> record which -- internal or external displays?6. I added a class in the binary.py file with the name of my new datatype.7. I added a tool.mydatatype section and file with my xml to input and then output my datatype by specifying format=mydatatype not format=binary.mydatatype Plus I added this into Tools_conf.xml Are there other xml specific items I need in my tool xml for an internal visualization8. By clicking the visualization icon. what does it call (hopefully 1or2 above) so i can add specific code to display my datatype internal "visualization?" (preferred) in galaxy?----- Original Message -----
From: Eric Rasche <esr@tamu.edu>
To: rbrown1422@comcast.net
Cc: galaxy-dev <galaxy-dev@lists.bx.psu.edu>
Sent: Tue, 08 Dec 2015 02:34:47 -0000 (UTC)
Subject: Re: [galaxy-dev] How does one run Javascript or HTML as a tool?Hi Bob,
Yes, galaxy supports output formats of HTML+JS, though the tool producing them may need to be whitelisted (grep for 'whitelist' in your galaxy.ini) for display to work properly.
If you wish to write your own visualization plugin for a specific datatype, there are assorted pieces of documentation on the wiki that might help you (though I usually just look at one of the other existing visualization plugins and copy+paste).
Cheers,
Eric
2015-12-07 20:08 GMT-06:00 <rbrown1422@comcast.net>:
Good evening Galaxy team,Is it possible to run JavaScript or HTML as a tool or a display module?I see support for URLs, e.g. UCSC Genome Browser, but I would like to process a specific datatype to allow it to be viewed in Galaxy -- but the application is a combination of HTML and JavaScript.Does Galaxy support this?Thank you,Bob
___________________________________________________________
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:
https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at:
http://galaxyproject.org/search/mailinglists/
--
Eric RascheProgrammer IICenter for Phage TechnologyRm 312A, BioBioTexas A&M UniversityCollege Station, TX 77843
___________________________________________________________
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:
https://lists.galaxyproject.org/
To search Galaxy mailing lists use the unified search at:
http://galaxyproject.org/search/mailinglists/