Changeset 3583


Ignore:
Timestamp:
Jul 20, 2007, 11:44:17 AM (14 years ago)
Author:
Martin Svensson
Message:

References #686 Jep Formula Filter and JepExtraValueCalculator? can now work on subset of bioassays

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/core/net/sf/basedb/core/plugin/AbstractAnalysisPlugin.java

    r3575 r3583  
    211211  }
    212212 
    213   protected static final String SOURCE_BIOASSAYS = "source_subset";
     213  protected static final String SOURCE_BIOASSAYS = "bioAssays";
    214214 
    215215  /**
  • trunk/src/plugins/core/net/sf/basedb/plugins/FormulaFilter.java

    r3569 r3583  
    3333import net.sf.basedb.core.IntegerParameterType;
    3434import net.sf.basedb.core.Item;
    35 import net.sf.basedb.core.ItemParameterType;
    3635import net.sf.basedb.core.Job;
    3736import net.sf.basedb.core.Permission;
     
    142141      // Get all parameters
    143142      BioAssaySet source = getSourceBioAssaySet(dc);
    144       List<BioAssay> bioAssays = (List<BioAssay>)job.getValues("bioAssays");
     143      List<BioAssay> bioAssays = getSourceBioAssays(dc);
    145144      String expression = (String)job.getValue("expression");
    146145      Integer includeLimit = (Integer)job.getValue("includeLimit");
     
    149148      String childDescription = (String)job.getValue("childDescription");
    150149     
    151       // Reattach bioassays
    152       if (bioAssays != null)
    153       {
    154         for (BioAssay ba : bioAssays)
    155         {
    156           dc.reattachItem(ba);
    157         }
    158       }
    159      
    160       // and, the current job
     150      // get the current job
    161151      Job currentJob = getCurrentJob(dc);
    162152     
     
    244234        // Source bioassay set and bioassays
    245235        storeValue(job, request, ri.getParameter(SOURCE_BIOASSAYSET));
    246         storeValues(job, request, ri.getParameter("bioAssays"));
     236        storeValues(job, request, ri.getParameter(SOURCE_BIOASSAYS));
    247237       
    248238        // Filter expression and options
     
    283273        // Source bioassay set and bioassay parameters
    284274        parameters.add(getSourceBioAssaySetParameter(null, null));
    285         PluginParameter<BioAssay> bioAssaysParameter = new PluginParameter<BioAssay>(
    286           "bioAssays", "Source bioassays", "Select the bioassays that should be filtered. " +
    287           "If no bioassay is selected all will be filtered.",
    288           new ItemParameterType<BioAssay>(BioAssay.class, null, false, 0,
    289               bas.getBioAssays().list(dc)
    290         ));
    291         parameters.add(bioAssaysParameter);
     275        parameters.add(getSourceBioAssaysParameter(null, null));
    292276       
    293277        // Filter expression and options
  • trunk/src/plugins/core/net/sf/basedb/plugins/JepExtraValueCalculator.java

    r2993 r3583  
    3333
    3434import net.sf.basedb.core.BaseException;
     35import net.sf.basedb.core.BioAssay;
    3536import net.sf.basedb.core.BioAssaySet;
    3637import net.sf.basedb.core.DbControl;
     
    5859import net.sf.basedb.core.query.Dynamic;
    5960import net.sf.basedb.core.query.Expression;
     61import net.sf.basedb.core.query.Expressions;
    6062import net.sf.basedb.core.query.Hql;
    6163import net.sf.basedb.core.query.Orders;
     64import net.sf.basedb.core.query.Restrictions;
    6265import net.sf.basedb.core.query.Selects;
    6366import net.sf.basedb.util.BioAssaySetUtil;
     
    145148      // Get all parameters
    146149      BioAssaySet source = getSourceBioAssaySet(dc);
     150      List<BioAssay> bioAssays = getSourceBioAssays(dc);
    147151      ExtraValueType extraValueType = (ExtraValueType)job.getValue("extraValueType");
    148152      String expression = (String)job.getValue("expression");
     
    162166      Expression extraExpression = BioAssaySetUtil.createJepExpression(dc, source, expression, false);
    163167      query.select(Selects.expression(extraExpression, "xtra"));
     168      // If one or more bioassays are selected-restrict to them.
     169      if (bioAssays != null && !bioAssays.isEmpty())
     170      {
     171        Expression[] selectedColumns = new Expression[bioAssays.size()];
     172        for (int i=0; i<selectedColumns.length; i++)
     173        {
     174          BioAssay ba = bioAssays.get(i);
     175          selectedColumns[i] = Expressions.integer(ba.getDataCubeColumnNo());
     176        }       
     177        query.restrict(Restrictions.in(
     178            Dynamic.column(VirtualColumn.COLUMN),
     179            selectedColumns));
     180      }
    164181
    165182      if (progress != null) progress.display(10, "Calculating extra value ("+source.getNumSpots()+" total)...");
     
    217234        storeValue(job, request, getSourceBioAssaySetParameter(null, null));
    218235       
     236        // Subset of bioassays
     237        storeValue(job, request, this.getSourceBioAssaysParameter(null, null));
     238       
    219239        // ExtraValueType
    220240        storeValue(job, request, extraValueTypeParameter);
     
    247267        // Source bioassay set
    248268        parameters.add(getSourceBioAssaySetParameter(null, null));
     269       
     270        // Sub set of bioassays
     271        parameters.add(getSourceBioAssaysParameter(null, null));
    249272       
    250273        // Extra value types
  • trunk/www/plugins/net/sf/basedb/plugins/jep_extra_value_calculator.jsp

    r3518 r3583  
    2828  import="net.sf.basedb.core.SessionControl"
    2929  import="net.sf.basedb.core.DbControl"
     30  import="net.sf.basedb.core.BioAssay"
    3031  import="net.sf.basedb.core.Item"
    3132  import="net.sf.basedb.core.ItemContext"
     
    3839  import="net.sf.basedb.core.ItemResultList"
    3940  import="net.sf.basedb.core.Include"
     41  import="net.sf.basedb.core.Type"
    4042  import="net.sf.basedb.core.query.Orders"
     43  import="net.sf.basedb.core.query.Restrictions"
     44  import="net.sf.basedb.core.query.Expressions"
    4145  import="net.sf.basedb.core.query.Hql"
    4246  import="net.sf.basedb.clients.web.Base"
     
    8185  RawDataType rdt = source.getRawDataType();
    8286 
     87  //Find selected bioassays
     88  List<BioAssay> bioAssays = null;
     89  if (job != null) bioAssays = (List<BioAssay>)job.getParameterValues("bioAssays");
     90  if (bioAssays == null)
     91  {
     92    ItemContext bioAssayContext = sc.getCurrentContext(Item.BIOASSAY);
     93    ItemQuery<BioAssay> bioAssayQuery = null;
     94    if (bioAssayContext.getSelected().size() > 0)
     95    {
     96      bioAssayQuery = source.getBioAssays();
     97      bioAssayQuery.restrict(
     98        Restrictions.in(Hql.property("id"), Expressions.parameter("selected"))
     99      );
     100      bioAssayQuery.setParameter("selected", bioAssayContext.getSelected(), Type.INT);
     101      bioAssays = bioAssayQuery.list(dc);
     102    }
     103  }
     104 
    83105  // Current parameter values
    84106  ExtraValueType currentExtraValueType = (ExtraValueType)job.getParameterValue("extraValueType");
     
    105127  %>
    106128  <base:page type="popup" title="Calculate extra value">
    107   <base:head styles="parameters.css">
     129  <base:head scripts="linkitems.js" styles="parameters.css">
    108130    <script language="JavaScript">
    109131    function hideErrorList()
     
    154176    {
    155177      var frm = document.forms['extraValue'];
    156       if (frm['parameter:extraValueType'].selectedIndex < 0)
     178      if (!frm.allBioAssays.checked && frm.bioAssays.length == 0)
     179      {
     180        alert('You have not selected any bioassays');
     181        return false;
     182      }
     183      else if (frm['parameter:extraValueType'].selectedIndex < 0)
    157184      {
    158185        alert('You must select a type');
     
    185212      {
    186213        var frm = document.forms['extraValue'];
     214        if (!frm.allBioAssays.checked)
     215        {
     216          var ids = Link.getListIds(frm.bioAssays, 'R');
     217          for (var i = 0; i < ids.length; i++)
     218          {
     219            Forms.createHidden(frm, 'parameter:bioAssays', ids[i]);
     220          }
     221        }
    187222        frm.submit();
    188223      }
     
    192227      location = 'index.jsp?ID=<%=ID%>&cmd=CancelWizard';
    193228    }
     229    function allBioAssaysOnClick()
     230    {
     231      var frm = document.forms['extraValue'];
     232      frm.bioAssays.disabled = frm.allBioAssays.checked;
     233    }
     234    function addBioAssaysOnClick()
     235    {
     236      var frm = document.forms['extraValue'];
     237      if (frm.allBioAssays.checked)
     238      {
     239        return;
     240      }
     241      var ids = Link.getListIds(frm.bioAssays, 'R');
     242      var excludes = ids.join(',');
     243      var url = '../../views/experiments/bioassays/index.jsp?ID=<%=ID%>&cmd=UpdateContext&mode=selectmultiple&callback=addBioAssayCallback&bioassayset_id=<%=source.getId()%>';
     244      url += "&exclude="+excludes;
     245      Main.openPopup(url, 'AddBioAssays', 1000, 700);
     246    }
     247    function addBioAssayCallback(bioAssayId, name)
     248    {
     249      var item = Link.getItem('R', bioAssayId);
     250      if (!item) item = new Item('R', bioAssayId, name);
     251      Link.addItem(document.forms['extraValue'].bioAssays, item);
     252    }
     253    function removeBioAssaysOnClick()
     254    {
     255      var frm = document.forms['extraValue'];
     256      if (frm.allBioAssays.checked)
     257      {
     258        return;
     259      }
     260      Link.removeSelected(frm.bioAssays);
     261    }
     262    function init()
     263    {
     264      initBioAssays();
     265    }
     266   
     267    function initBioAssays()
     268    {
     269      var frm = document.forms['extraValue'];
     270      <%
     271      if (bioAssays != null)
     272      {
     273        for (BioAssay ba : bioAssays)
     274        {
     275          %>
     276          Link.addNewItem(frm.bioAssays, new Item('R', <%=ba.getId()%>, '<%=HTML.javaScriptEncode(ba.getName())%>'));
     277          <%
     278        }
     279      }
     280      %>
     281      frm.allBioAssays.checked = frm.bioAssays.length == 0;
     282      allBioAssaysOnClick();
     283    }
    194284    </script>
    195285  </base:head>
    196   <base:body>
     286  <base:body onload="init()">
    197287    <form name="extraValue" action="index.jsp" method="get" onsubmit="return false;">
    198288    <input type="hidden" name="ID" value="<%=ID%>">
     
    244334        <td class="prompt">Source bioassay set</td>
    245335        <td><%=HTML.encodeTags(source.getName())%></td>
     336      </tr>
     337      <tr valign="top">
     338      <td class="prompt">Bioassays</td>
     339        <td>
     340          <input type="checkbox" name="allBioAssays"
     341            onclick="allBioAssaysOnClick()"><a
     342            href="javascript:document.forms['extraValue'].allBioAssays.click()">All bioassays</a><br>
     343          <table border="0" cellspacing="0" cellpadding="0">
     344          <tr valign="top">
     345          <td>
     346            <select name="bioAssays" size="5" multiple style="width: 20em;">
     347            </select>
     348          </td>
     349          <td>
     350            <table border="0">
     351            <tr><td width="150"><base:button
     352              onclick="addBioAssaysOnClick()"
     353              title="Add&nbsp;bioassays&hellip;"
     354              tooltip="Add bioassays"
     355              /></td></tr>
     356            <tr><td width="150"><base:button
     357              onclick="removeBioAssaysOnClick()"
     358              title="Remove"
     359              tooltip="Remove the selected bioassays"
     360            /></td></tr>
     361            </table>
     362          </td>
     363          </tr>
     364          </table>
     365        </td>
    246366      </tr>
    247367      <tr>
Note: See TracChangeset for help on using the changeset viewer.