[ome-users] Struggling with augmented XML output from OME

Graham Klyne graham.klyne at zoo.ox.ac.uk
Mon Sep 19 17:36:52 BST 2005


Following recent messages, I've made my attempt to obtain augmented XML
output from OME, but so far I'm hitting a brick wall.

Here's what I did so far:


(1) edited /usr/lib/perl5/site_perl/5.8.5/OME/Web/DefaultMenuBuilkder.pm
to contain this:
[[
	# ** Images **
	{
		web_class => 'OME::Web::XMLFileExport',
		type => 'link',
		text => undef,
	},
	{
		web_class => 'OME::Web::XMLFileExportDTGED',
		type => 'link',
		text => undef,
	},
]]


(2) created
/usr/lib/perl5/site_perl/5.8.5/OME/Web/XMLFileExportDTGED.pm, based on
XMLFileExport.pm, but with the following changes:
[[
[root at helenome src]# diff
/usr/lib/perl5/site_perl/5.8.5/OME/Web/XMLFileExportDTGED.pm
/usr/lib/perl5/site_perl/5.8.5/OME/Web/XMLFileExport.pm
1c1
< # OME/Web/XMLFileExportDTGED.pm
---
> # OME/Web/XMLFileExport.pm
38c38
< package OME::Web::XMLFileExportDTGED ;
---
> package OME::Web::XMLFileExport ;
54c54
<       return "Open Microscopy Environment - Export OME XML + DTGED data" ;
---
>       return "Open Microscopy Environment - Export OME XML to browser" ;
58,59c58
<         ###CHANGED:
<       my $menu_text = "Export debug DTGED Image(s)";
---
>       my $menu_text = "Export Image(s)";
95,97c94,95
<                       ###CHANGED:
<                       my $exporter=
OME::Web::XMLFileExportDTGED->new($session);
<                       $exporter->exportDTGEDToXMLFile(\@images,$filename);
---
>                       my $exporter=
OME::Tasks::OMEXMLImportExport->new($session);
>                       $exporter->exportToXMLFile(\@images,$filename);
121,122c119
<         ###CHANGED:
<       my $tmpl = HTML::Template->new( filename =>
'XMLFileExportDTGED.tmpl', path => $tmpl_dir );
---
>       my $tmpl = HTML::Template->new( filename =>
'XMLFileExport.tmpl', path => $tmpl_dir );
130,131c127
<               ###CHANGED:
<               $cgi->startform( -action => $self->pageURL(
'OME::Web::XMLFileExportDTGED' ) ).
---
>               $cgi->startform( -action => $self->pageURL(
'OME::Web::XMLFileExport' ) ).
139,201d134
<
< #####################################################
< # For each given image, exports all attributes from the
< # image import MEX to the specified XML file.
< # export($images,$file)
< # $images  a ref to an array containing the image objects
< # $file   MUST be absolute (path+name)
<
< sub exportDTGEDToXMLFile {
<
<       my ($self, $images, $file) = @_ ;
<       my $session = OME::Session->instance();
<       my $factory = $session->Factory() ;
<
<       # To-do check if can write in file
<       my $exporter = OME::Tasks::OMEExport->new( session => $session ) ;
<       my @exportObjects = () ;
<       my $image_import_module =
$session->Configuration()->image_import_module();
<         ###NEW:
<       my $annotation_module   =
$session->Configuration()->annotation_module();
<       my @outputs = $image_import_module->outputs();
<       foreach my $image (@$images) {
<               push(@exportObjects,$image) ; # Add the image
<
<               # Get the import mex for this image
<               my  $import_MEX = $factory->findObject
("OME::ModuleExecution",
<                       image_id => $image->id(),
<                       module   => $image_import_module,
<               );
<
<               ###NEW...
<               # Get the DTGED annotation mex for this image
<               my  $dtged_MEX = $factory->findObject
("OME::ModuleExecution",
<                       image_id => $image->id(),
<                       module   => $annotation_module
<               );
<               ### I guess this selects all annotations for the image;
<               ### how do I restrict additional results to those with
Untyped Oputput
<               ### of the form/semantic type defined as
"DTGEDImageAnnotation" ?
<               ###
<
<               # Collect all the attributes produced by the import MEX
<               my @untyped_outputs = $import_MEX->untypedOutputs();
<               ###NEW:
<               my @dtged_outputs   = $dtged_MEX->untypedOutputs();
<               ###CHANGED:
< ###           foreach my $output
(@outputs, at untyped_outputs, at dtged_outputs) {
<               foreach my $output (@untyped_outputs, at dtged_outputs) {
<                       my $ST = $output->semantic_type();
<                       next unless $ST; # Skip the untyped output itself
<
<                       # Get the output's attributes, and push them on
the list
<                       my $attributes =
OME::Tasks::ModuleExecutionManager->
<                               getAttributesForMEX($import_MEX,$ST);
<                       push(@exportObjects,@$attributes);
<               }
<
<       }
<       $exporter->buildDOM(\@exportObjects, ResolveAllRefs => 1,
ExportSTDs => 0) ;
<       $exporter->exportFile($file);
<       return ;
< }
<
]]


(3) Created /OME/html/Templates/XMLFileExportDTGED.tmpl from
/OME/html/Templates/XMLFileExport.tmpl, thus:
[[
[root at helenome src]# diff /OME/html/Templates/XMLFileExportDTGED.tmpl
/OME/html/Templates/XMLFileExport.tmpl
7c7
< <h2>Export Images to OME XML with DTGED data</h2>
---
> <h2>Export Images to OME XML</h2>
]]

...

The new left-menu entry is displayed as expected, and it does indeed
invoke the new code.  But whatever changes I make to the new function
exportDTGEDToXMLFile, the result of exporting DTGED file data is exactly
the same as fromn performing a normal export ofnthe same file.

I have ensured that the new function is actually being called (by
inserting a die clause in the new routine, and observing the system
error displayed when attempting to export DTGED data).

I have also tried removing the line:
    push(@exportObjects,$image) ; # Add the image
so I can get the metadata without image data, but still no change in the
result data.

I can't find any place other than that I've replaced where function
exportToXMLFile is called.

So, as far as I can tell, I am doing all the appropriate things, but
whatever changes I make to the new export function, the output I get
sent back to my browser is unchanged.

Any pointers, please?

#g

-- 
Graham Klyne
Image Bioinformatics Research Group (http://www.bioimage.org/)
Department of Zoology, University of Oxford
South Parks Road, Oxford OX1 3PS, UK
E-mail: <Graham.Klyne at zoo.ox.ac.uk>
Direct phone: +44-(0)1865-281991
Departmental fax: +44-(0)1865-310447



More information about the ome-users mailing list