Changeset 1938


Ignore:
Timestamp:
Apr 17, 2013, 2:50:51 PM (10 years ago)
Author:
Nicklas Nordborg
Message:

References #424: Select RNA items for library preparation

Add support for selecting 'Stratagene' when designing a new mRNA plate.

Location:
extensions/net.sf.basedb.reggie/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.reggie/trunk/resources/libprep/assign_barcode.jsp

    r1932 r1938  
    224224{
    225225  // Set the 'stratagene'/'external' flag
    226   cdna.stratagene = cdna.name.indexOf(STRATAGENE_NAME) == 0;
     226  cdna.stratagene = cdna.name.indexOf(GENERIC_STRATAGENE_NAME) == 0;
    227227  cdna.external = cdna.name.indexOf(EXTERNAL_RNA_NAME) == 0;
    228228}
     
    602602{
    603603  background-image: url('../images/mrnaqc.png');
    604   background-position: 95% 5%;
     604  background-position: 95% 25%;
    605605  background-repeat: no-repeat;
    606606}
  • extensions/net.sf.basedb.reggie/trunk/resources/libprep/mrna_protocol2.jsp

    r1929 r1938  
    140140    var rna = mrna.rna;
    141141    // Set the 'stratagene' flag
    142     rna.stratagene = rna.name == STRATAGENE_NAME;
     142    rna.stratagene = rna.name.indexOf(GENERIC_STRATAGENE_NAME) == 0;
    143143    rna.external = rna.name == EXTERNAL_RNA_NAME;
    144144   
     
    466466  {
    467467    background-image: url('../images/mrnaqc.png');
    468     background-position: 95% 5%;
     468    background-position: 95% 25%;
    469469    background-repeat: no-repeat;
    470470  }
  • extensions/net.sf.basedb.reggie/trunk/resources/libprep/select_rna.jsp

    r1929 r1938  
    5656    var tmp = {};
    5757    tmp.name = name;
    58     tmp.stratagene = name == STRATAGENE_NAME;
     58    tmp.stratagene = name.indexOf(GENERIC_STRATAGENE_NAME) == 0;
    5959    tmp.external = name == EXTERNAL_RNA_NAME;
    6060    tmp.info = rna.infoByName(name);
     
    7070    var tmp = {};
    7171    tmp.name = info.name;
    72     tmp.stratagene = tmp.name == STRATAGENE_NAME;
     72    tmp.stratagene = tmp.name.indexOf(GENERIC_STRATAGENE_NAME) == 0;
    7373    tmp.external = tmp.name == EXTERNAL_RNA_NAME;
    7474    tmp.id = info.id;
     
    185185     
    186186      var warningMsg = null;
     187      if (info.bioWell)
     188      {
     189        var rnaWell = info.bioWell;
     190        text += '<div class="location">'+rnaWell.bioPlate.name+'['+rnaWell.location+']</div>';
     191      }
     192      else if (!rna.stratagene && !rna.external)
     193      {
     194        if (!warningMsg) warningMsg = 'No location';
     195      }
     196
    187197      if (info && info.id && !rna.stratagene && !rna.external)
    188198      {
     
    190200        var use = Math.ceil(quantity/info.NDConc);
    191201        var water = Math.round(50-use);
    192         if (info.bioWell)
    193         {
    194           var rnaWell = info.bioWell;
    195           text += '<div class="location">'+rnaWell.bioPlate.name+'['+WELL_ALPHA[rnaWell.row]+(rnaWell.column+1)+']</div>';
    196         }
    197         else
    198         {
    199           if (!warningMsg) warningMsg = 'No location';
    200         }
    201202        if (info.remainingQuantity)
    202203        {
     
    227228          if (!warningMsg) warningMsg = 'No NDConc value';
    228229        }
    229         if (warningMsg)
    230         {
    231           well.setWarning(warningMsg);
    232         }
    233230      }
    234231      else if (!rna.id)
     
    240237        text += '<div class="comment">'+Main.encodeTags(rna.comment)+'</div>';
    241238      }
     239      if (warningMsg)
     240      {
     241        well.setWarning(warningMsg);
     242      }
    242243    }
    243244    else if (well.copyText)
     
    257258function init()
    258259{
     260  loadStratagene();
     261 
    259262  keepSessionAlive('<%=ID%>', debug, '../');
    260263 
     
    274277  Plate.name = findNextMRnaPlateName();
    275278  setInnerHTML('plateName', Plate.name);
     279}
     280
     281function loadStratagene()
     282{
     283  var request = Ajax.getXmlHttpRequest();
     284  var url = '../MRna.servlet?ID=<%=ID%>&cmd=GetStratagene';
     285  if (debug) Main.debug(url);
     286  request.open("GET", url, false); 
     287  request.send(null);
     288
     289  if (debug) Main.debug(request.responseText);
     290  var response = JSON.parse(request.responseText); 
     291  if (response.status != 'ok')
     292  {
     293    setFatalError(response.message);
     294    return false;
     295  }
     296 
     297  var stratagene = response.stratagene;
     298 
     299  var frm = document.forms['reggie'];
     300
     301  for (var i = 0; i < stratagene.length; i++)
     302  {
     303    var s = stratagene[i];
     304    var name = s.name;
     305    if (s.bioWell)
     306    {
     307      name += ' -- ' + s.bioWell.bioPlate.name + ' ('+s.bioWell.location + ')';
     308    }
     309    frm.stratagene[frm.stratagene.length] = new Option(name, s.name);
     310  }
     311 
    276312}
    277313
     
    374410function setToStratagene()
    375411{
    376   setToSpecial(STRATAGENE_NAME, true);
     412  var frm = document.forms['reggie'];
     413  setToSpecial(frm.stratagene.value, true);
    377414}
    378415
     
    15091546      </tr>
    15101547      <tr valign="top">
     1548        <td class="prompt">Stratagene to use</td>
     1549        <td class="input">
     1550          <select name="stratagene" style="width: 25em;"></select>
     1551        </td>
     1552        <td class="help">
     1553          Select the Stratagene tube to use. If not known, the
     1554          generic <b>Stratagene.r</b> (last in the list) should be used.
     1555        </td>
     1556      </tr>
     1557      <tr valign="top">
    15111558        <td class="prompt">Preliminary pool layout</td>
    15121559        <td class="input">
    1513           <select name="pool_schema" onchange="poolSchemaOnChange()"></select>
     1560          <select name="pool_schema" onchange="poolSchemaOnChange()" style="width: 25em;"></select>
    15141561        </td>
    15151562        <td class="help">Preliminary pool layout (can be changed later).</td>
  • extensions/net.sf.basedb.reggie/trunk/resources/reggie.js

    r1927 r1938  
    22var WELL_ALPHA = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
    33
    4 var STRATAGENE_NAME = 'Stratagene.r';
     4var GENERIC_STRATAGENE_NAME = 'Stratagene.r';
    55var EXTERNAL_RNA_NAME = 'External.r';
    66
  • extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/dao/Rna.java

    r1908 r1938  
    6363 
    6464  /**
    65     The name of the RNA item in BASE that represents Stratagene.
     65    The name of the RNA item in BASE that represents Generic Stratagene.
     66    Tracked Stratagene should use the pattern 'Stratagene.rNNN' where
     67    'NNN' is a number.
    6668    @since 2.12
    6769  */
     
    7375  */
    7476  public static final String EXTERNAL = "External.r";
     77 
     78  /**
     79    Checks if an item with the given name is a Stratagene RNA or a
     80    derivative from a Stratagene RNA.
     81    @since 2.12
     82  */
     83  public static boolean isStratagene(String name)
     84  {
     85    return name.startsWith(STRATAGENE);
     86  }
    7587 
    7688  /**
     
    109121    // Filter on id not equal to any that has a RNAQC child
    110122    query.restrict(Restrictions.neq(Hql.property("id"), Expressions.all(subquery)));
    111     // Filter on creation date (eg. to get rid of 'Stratagene')
     123    // Filter on creation date==null and parent != null (eg. to get rid of 'Stratagene')
    112124    query.join(Hql.innerJoin("creationEvent", "ce"));
    113125    query.restrict(Restrictions.neq(Hql.property("ce", "eventDate"), null));
     126    query.restrict(Restrictions.neq(Hql.property("parent"), null));
    114127   
    115128    query.order(Orders.asc(Hql.property("id")));
     129   
     130    return toRna(query.list(dc));
     131  }
     132 
     133  /**
     134    Find all Stratagene RNA that is available for selection in the
     135    mRNA wizards. This should include all 'Stratagene.rNNN' where
     136    'NNN' is a number that has a registered location on a bioplate, and
     137    the generic 'Stratagene.r' extract.
     138  */
     139  public static List<Rna> findStratagene(DbControl dc)
     140  {
     141    ItemQuery<Extract> query = Extract.getQuery();
     142    query.setIncludes(Reggie.INCLUDE_IN_CURRENT_PROJECT);
     143    // Join bioplate
     144    query.join(Hql.leftJoin(null, "bioWell", "bw", null, true));
     145    query.join(Hql.leftJoin("bw", "bioPlate", "bp", null, true));
     146   
     147    // Filter on RNA subtype
     148    Subtype.RNA.addFilter(dc, query);
     149   
     150    // Filter on name='Stratagene.r' OR name ~ 'Stratagene.rNNN'
     151    query.restrict(
     152      Restrictions.or(
     153        Restrictions.eq(Hql.property("name"), Expressions.string(Rna.STRATAGENE)),
     154        Restrictions.and(
     155          Restrictions.rlike(Hql.property("name"), Expressions.string("^"+ Rna.STRATAGENE + "[0-9]+$")),
     156          Restrictions.neq(Hql.property("bioWell"), null)
     157        )
     158      )
     159    );
     160
     161    // Sort by bioplate position -- those without plate are sorted last by name
     162    query.order(Orders.asc(Hql.expression("coalesce(bp.name, 'zzzz')", null)));
     163    query.order(Orders.asc(Hql.property("bw", "row")));
     164    query.order(Orders.asc(Hql.property("bw", "column")));
     165    query.order(Orders.asc(Hql.property("name")));
    116166   
    117167    return toRna(query.list(dc));
  • extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/servlet/MRnaServlet.java

    r1899 r1938  
    9494        json.put("name", bioPlateType.generateNextName(dc, 1));
    9595      }
     96      else if ("GetStratagene".equals(cmd))
     97      {
     98        dc = sc.newDbControl();
     99        List<Rna> stratagene = Rna.findStratagene(dc);
     100       
     101        JSONArray jsonStratagene = new JSONArray();
     102        for (Rna s : stratagene)
     103        {
     104          s.loadBioPlateLocation();
     105          jsonStratagene.add(s.asJSONObject());
     106        }
     107        json.put("stratagene", jsonStratagene);
     108       
     109      }
    96110      else if ("GetUnprocessedPlates".equals(cmd))
    97111      {
     
    143157        query.join(Hql.innerJoin("creationEvent", "ce"));
    144158        query.restrict(Restrictions.neq(Hql.property("ce", "eventDate"), null));
     159        // Filter on parent != null (to get rid of 'Stratagene'
     160        query.restrict(Restrictions.neq(Hql.property("parent"), null));
    145161       
    146162        // Join AUTO_PROCESSING annotation
Note: See TracChangeset for help on using the changeset viewer.