myGrid

Save to Excel with Empty list items

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.4
  • Fix Version/s: 1.5
  • Component/s: Taverna Data
  • Labels:
    None

Description

Reported by Edward Kawas:

A workflow that when run produces numerous results (many of which
are empty). When I try to save to excel, I get errors (content not allowed in
prolog) and the resulting file is empty. I think that this problem arises
because the first item in the results is empty, but I am not sure.

When I tried it I didn't get an error but the 4.0k file produced didn't appear to contain any data.

Workflow XML is below:

<?xml version="1.0" encoding="UTF-8"?>
<s:scufl xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" version="0.2" log="0">
  <s:workflowdescription lsid="urn:lsid:www.mygrid.org.uk:operation:generated_by_gbrowse_moby" author="Gbrowse Moby" title="" />
  <s:processor name="id" boring="true">
    <s:stringconstant>apetala3</s:stringconstant>
  </s:processor>
  <s:processor name="namespace" boring="true">
    <s:stringconstant>Global_Keyword</s:stringconstant>
  </s:processor>
  <s:processor name="getDragonBlastText__4">
    <s:description>Perform blast analysis against the Dragon database using fasta text as input.</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>getDragonBlastText</s:serviceName>
      <s:authorityName>antirrhinum.net</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="Parse_Moby_Data_Object">
    <s:description>Processor to parse the datatype Object</s:description>
    <s:biomobyparser>
      <s:endpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:endpoint>
      <s:datatype>Object</s:datatype>
      <s:articleName>alleles</s:articleName>
      <s:description>Processor to parse the datatype Object</s:description>
    </s:biomobyparser>
  </s:processor>
  <s:processor name="getDragonLocusAlleles__7">
    <s:description>Retrieves collection of Antirrhinum alleles for a given Locus</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>getDragonLocusAlleles</s:serviceName>
      <s:authorityName>antirrhinum.net</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="GenericSequence2FASTA__3">
    <s:description>Converson of MOBY Generic Sequence objects to FASTA objects</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>GenericSequence2FASTA</s:serviceName>
      <s:authorityName>bioinfo.icapture.ubc.ca</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="parseDragonDBBlastText__5">
    <s:description>A service that takes in as input blast text from a blast against DragonDB, then parses out the subject id's of hits and returns them as a collection.</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>parseDragonDBBlastText</s:serviceName>
      <s:authorityName>antirrhinum.net</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="getEmblDNASequence__2">
    <s:description>returns a collection of EMBL DNA Sequences related to a given AGI-Code/Keyword/EMBL Accession (e.g. &amp;quot;At2g17950&amp;quot;,&amp;quot;Superman&amp;quot;,&amp;quot;AJ012310&amp;quot;)</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>getEmblDNASequence</s:serviceName>
      <s:authorityName>mips.gsf.de</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="getAGILocusCodes__1">
    <s:description>returns a collection of AGI_LocusCodes which are somehow related to a given Keyword in their MAtDB annotation (e.g. "wuschel")</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>getAGILocusCodes</s:serviceName>
      <s:authorityName>mips.gsf.de</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="getDragonSequenceLocus__6">
    <s:description>Retrieves the Locus for the associated Antirrhinum(snapdragon) Sequence ID.</s:description>
    <s:biomobywsdl>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>getDragonSequenceLocus</s:serviceName>
      <s:authorityName>antirrhinum.net</s:authorityName>
    </s:biomobywsdl>
  </s:processor>
  <s:processor name="Object">
    <s:description>an identifier</s:description>
    <s:biomobyobject>
      <s:mobyEndpoint>http://mobycentral.icapture.ubc.ca/cgi-bin/MOBY05/mobycentral.pl</s:mobyEndpoint>
      <s:serviceName>Object</s:serviceName>
      <s:authorityName />
    </s:biomobyobject>
  </s:processor>
  <s:link source="GenericSequence2FASTA__3:FASTA(fasta)" sink="getDragonBlastText__4:FASTA(sequence)" />
  <s:link source="Object:mobyData" sink="getAGILocusCodes__1:Object(search_keyword)" />
  <s:link source="getAGILocusCodes__1:Object(Collection - 'result_codes' As Simples)" sink="getEmblDNASequence__2:Object(search_term)" />
  <s:link source="getDragonBlastText__4:NCBI_BLAST_Text(blast)" sink="parseDragonDBBlastText__5:NCBI_BLAST_Text(blastreport)" />
  <s:link source="getDragonLocusAlleles__7:Object(Collection - 'alleles')" sink="Parse_Moby_Data_Object:mobyData('Object')" />
  <s:link source="getDragonSequenceLocus__6:Object(locus)" sink="getDragonLocusAlleles__7:Object(locus)" />
  <s:link source="getEmblDNASequence__2:CommentedDNASequence(Collection - 'output_DNASequences' As Simples)" sink="GenericSequence2FASTA__3:GenericSequence(genericsequence)" />
  <s:link source="id:value" sink="Object:id" />
  <s:link source="namespace:value" sink="Object:namespace" />
  <s:link source="parseDragonDBBlastText__5:Object(Collection - 'hit_ids' As Simples)" sink="getDragonSequenceLocus__6:Object(sequence)" />
  <s:link source="Parse_Moby_Data_Object:id" sink="output" />
  <s:sink name="output" />
</s:scufl>
  1. excel-empty.xml
    2006-09-06 10:43
    0.5 kB
    Stian Soiland-Reyes
  2. excel-empty-in.xml
    2006-09-06 10:43
    3 kB
    Stian Soiland-Reyes

Issue Links

Activity

Hide
Stian Soiland-Reyes added a comment - 2006-09-06 10:14

I can't see a problem with empty lists, which just shows up as empty rows in Excel.

However, as reported in TAV-120, deeply nested links can be a problem. I'll therefore close this issue and leave TAV-120 open.

Show
Stian Soiland-Reyes added a comment - 2006-09-06 10:14 I can't see a problem with empty lists, which just shows up as empty rows in Excel. However, as reported in TAV-120, deeply nested links can be a problem. I'll therefore close this issue and leave TAV-120 open.
Hide
Stian Soiland-Reyes added a comment - 2006-09-06 10:36

Actually.. the code of SaveAsExcel.java uses:

private boolean isTextual(Object o) {
if (o instanceof String) { return true; }
if (o instanceof Collection) {
Collection c = (Collection) o;
if (c.isEmpty()) { return false; }
return isTextual(c.iterator().next());
}
return false;
}

So if anywhere down the first element path is an empty list, the whole dataset will be skipped. Reopening TAV-116.

Show
Stian Soiland-Reyes added a comment - 2006-09-06 10:36 Actually.. the code of SaveAsExcel.java uses: private boolean isTextual(Object o) { if (o instanceof String) { return true; } if (o instanceof Collection) { Collection c = (Collection) o; if (c.isEmpty()) { return false; } return isTextual(c.iterator().next()); } return false; } So if anywhere down the first element path is an empty list, the whole dataset will be skipped. Reopening TAV-116.
Hide
Stian Soiland-Reyes added a comment - 2006-09-06 10:43

Reproducable with attached workflow and inputs.

The inputs are

{
{}

{1 2 3} {4 5 6}

}

Expected Excel would be

output
(empty row)
1 2 3
4 5 6

But instead we just get a blank sheet.

Show
Stian Soiland-Reyes added a comment - 2006-09-06 10:43 Reproducable with attached workflow and inputs. The inputs are { {} {1 2 3} {4 5 6} } Expected Excel would be output (empty row) 1 2 3 4 5 6 But instead we just get a blank sheet.
Hide
Stian Soiland-Reyes added a comment - 2006-09-15 14:08

Fixed in CVS

Show
Stian Soiland-Reyes added a comment - 2006-09-15 14:08 Fixed in CVS
Hide
Stian Soiland-Reyes added a comment - 2006-09-15 14:08

Confirmed with original workflow

Show
Stian Soiland-Reyes added a comment - 2006-09-15 14:08 Confirmed with original workflow

People

Vote (0)
Watch (0)

Dates

  • Created:
    2006-08-21 10:33
    Updated:
    2006-09-15 14:08
    Resolved:
    2006-09-15 14:08