Changeset 2987


Ignore:
Timestamp:
Dec 1, 2006, 11:34:04 AM (16 years ago)
Author:
Johan Enell
Message:

Fixes #429
BioAssaySetExporter? can export a serial basefile not merged on reporter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.1/src/plugins/core/net/sf/basedb/plugins/BioAssaySetExporter.java

    r2964 r2987  
    4141import net.sf.basedb.core.Include;
    4242import net.sf.basedb.core.Item;
    43 import net.sf.basedb.core.ItemAlreadyExistsException;
    4443import net.sf.basedb.core.ItemParameterType;
    4544import net.sf.basedb.core.ItemQuery;
     
    8382import java.util.Comparator;
    8483import java.util.EnumSet;
     84import java.util.HashMap;
    8585import java.util.HashSet;
    8686import java.util.List;
     
    9797     use in MeV (available from http://www.tm4.org).
    9898
    99    @author jari
    100    @version 2.0
     99   @author jari, enell
     100   @version 2.1
    101101   @base.modified $Date$
    102102*/
     
    165165      {
    166166        List<Throwable> errors = validateRequestParameters
    167         (getConfigureJobParameters(context).getParameters(), request);
     167          (getConfigureBasefileParameters(context).getParameters(), request);
    168168        if (errors != null)
    169169        {
     
    172172          return;
    173173        }
    174         for (PluginParameter<?> pp : getConfigureBasefileParameters(context).getParameters())
    175         {
    176           storeValue(job, request, pp);
    177         }
     174       
     175        storeValue(job, request, geneAveragesParameter);
     176        storeValue(job, request, serialFormatParameter);
     177        storeValues(job, request, usedFieldsParameter);
     178        storeValues(job, request, usedColumnsParameter);
    178179
    179180        response.setDone("Job configuration complete", Job.ExecutionTime.SHORT);
     
    187188
    188189 
    189   private void exportBASE(BioAssaySet bas, File file, Map<String, String> parameters, List<String> reporterFields, List<String> spotFields, Boolean serialFormat, Boolean mergeReporters)
     190  private void exportBASE(BioAssaySet bas, File file, Map<String, String> parameters,
     191    List<String> reporterFields, List<String> spotFields, Boolean serialFormat, Boolean mergeReporters)
    190192    throws IOException, SQLException
    191193  {
     
    195197    // header and parameter section
    196198    out.println("BASEfile");
    197     if (parameters != null)
     199    if (!parameters.isEmpty())
    198200    {
    199201      for (String key : parameters.keySet())
     
    202204      }
    203205      out.println("%");
    204     }
    205     out.println();
     206      out.println();
     207    }
    206208   
    207209    // assay section   
     
    225227        if (!values.isEmpty()) out.print(values.iterator().next());
    226228      }
     229      out.println();
    227230    }
    228231    out.println();
     
    244247        out.println("%");
    245248       
     249        Integer aliasIndex = 0;
     250        Map<String, String> aliases = new HashMap<String, String>();
    246251        DynamicSpotQuery query = ba.getSpotData();
    247252        for (String field : reporterFields)
    248253        {
    249           query.select(Selects.expression(BioAssaySetUtil.createJepExpression(dc, bas, field), field));
     254          ++aliasIndex;
     255          query.select(Selects.expression(BioAssaySetUtil.createJepExpression(dc, bas, field), aliasIndex.toString()));
     256          aliases.put(field, aliasIndex.toString());
    250257        }
    251258        for (String field : spotFields)
    252259        {
    253           query.select(Selects.expression(BioAssaySetUtil.createJepExpression(dc, bas, field), field));
     260          ++aliasIndex;
     261          query.select(Selects.expression(BioAssaySetUtil.createJepExpression(dc, bas, field),
     262            aliasIndex.toString()));
     263          aliases.put(field, aliasIndex.toString());
    254264        }
    255265        if (mergeReporters)
     
    263273        for (String column : reporterFields)
    264274        {
    265           reporterIndex.add(result.getIndex(column));
     275          reporterIndex.add(result.getIndex(aliases.get(column)));
    266276        }
    267277        for (String field : spotFields)
    268278        {
    269           spotIndex.add(result.getIndex(field));
     279          spotIndex.add(result.getIndex(aliases.get(field)));
    270280        }
    271281
     
    290300          out.println();
    291301        }
    292        
    293302        out.println();
    294303      }
     
    296305    else
    297306    {
    298      
     307      // matrix format
    299308    }
    300309   
     
    529538          ( "serialFormat",
    530539            "Export as matrix or serial basefile.",
    531             "The data can be exported as a matrix with all data in the same section or in a serial format where the data is separated for each assay.",
     540            "The data can be exported as a matrix with all data in the same section or in a " +
     541            "serial format where the data is separated for each assay.",
    532542            new BooleanParameterType(false, true, 1, serialFormat));
    533543       
     
    536546        BioAssaySet bas = (BioAssaySet) job.getValue(bioAssaySetParameter.getName());
    537547        //Spotfields
     548        fields.add("pos()", "Position");
    538549        int channels = bas.getRawDataType().getChannels();
    539550        for (int channel = 1; channel <= channels; ++channel)
     
    586597        }
    587598       
     599        fields.sortValues();
    588600        //Limsfields???
    589601       
     
    603615        });
    604616        Enumeration<String, String> columns = new Enumeration<String, String>();
     617        columns.add("rep('name')", "Reporter name");
     618        columns.add("rep('externalId')", "Reporter ID");
     619        columns.add("rep('symbol')", "Gene symbol");
     620        columns.add("rep('description')", "Description");
     621        columns.add("rep('lastUpdate')", "Last updated");
    605622        for (ExtendedProperty ep : eps)
    606623        {
    607           columns.add(ep.getColumn(), ep.getTitle());
    608         }
     624          columns.add("rep('"+ep.getName()+"')", ep.getTitle());
     625        }
     626        columns.sortValues();
    609627        usedColumnsParameter = new PluginParameter<String>(
    610628          "usedColumns",
     
    672690    if (permissions.size() == 0)
    673691    {
    674       permissions.add(new Permissions(Item.ANNOTATIONTYPE, null,
    675                                       EnumSet.of(Permission.READ)));
    676       permissions.add(new Permissions(Item.DIRECTORY, null,
    677                                       EnumSet.of(Permission.CREATE,
    678                                                  Permission.WRITE)));
    679       permissions.add(new Permissions(Item.EXPERIMENT, null,
    680                                       EnumSet.of(Permission.READ)));
    681       permissions.add(new Permissions(Item.FILE, null,
    682                                       EnumSet.of(Permission.CREATE,
    683                                                  Permission.WRITE)));
    684       permissions.add(new Permissions(Item.RAWBIOASSAY, null,
    685                                       EnumSet.of(Permission.READ)));
    686       permissions.add(new Permissions(Item.USER, null,
    687                                       EnumSet.of(Permission.READ)));
     692      permissions.add(new Permissions(Item.ANNOTATIONTYPE, null, EnumSet.of(Permission.READ)));
     693      permissions.add(new Permissions(Item.DIRECTORY, null, EnumSet.of(Permission.CREATE, Permission.WRITE)));
     694      permissions.add(new Permissions(Item.EXPERIMENT, null, EnumSet.of(Permission.READ)));
     695      permissions.add(new Permissions(Item.FILE, null, EnumSet.of(Permission.CREATE, Permission.WRITE)));
     696      permissions.add(new Permissions(Item.RAWBIOASSAY, null, EnumSet.of(Permission.READ)));
     697      permissions.add(new Permissions(Item.USER, null, EnumSet.of(Permission.READ)));
    688698    }
    689699    return permissions;
     
    754764      else if (format.equals(FORMAT_BASEFILE))
    755765      {
    756         List<String> reporterFields = new ArrayList<String>((List<String>) job.getValues(usedColumnsParameter.getName()));
    757         List<String> spotFields = new ArrayList<String>((List<String>) job.getValues(usedFieldsParameter.getName()));
    758        
    759         boolean serialFormat = (Boolean) job.getValue(serialFormatParameter.getName());
    760         boolean geneAverage = (Boolean) job.getValue(geneAveragesParameter.getName());
    761        
    762         exportBASE(bioassayset, file, null, reporterFields, spotFields, serialFormat, geneAverage);
     766        List<String> reporterFields = new ArrayList<String>((List<String>) job.getValues("usedColumns"));
     767        List<String> spotFields = new ArrayList<String>((List<String>) job.getValues("usedFields"));
     768       
     769        boolean serialFormat = (Boolean) job.getValue("serialFormat");
     770        boolean geneAverage = (Boolean) job.getValue("geneAverages");
     771       
     772        exportBASE(bioassayset, file, Collections.EMPTY_MAP, reporterFields, spotFields, serialFormat, geneAverage);
    763773      }
    764774      else
Note: See TracChangeset for help on using the changeset viewer.