Ejemplo n.º 1
0
  public ActionForward execute(
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {

    log.info("Got request for GO Slim analysis for ProtenProphet protein inference");

    // form for filtering and display options
    ProteinProphetFilterForm filterForm = (ProteinProphetFilterForm) form;

    // get the protein inference id
    int pinferId = filterForm.getPinferId();

    long s = System.currentTimeMillis();

    // Get the peptide definition; We don't get peptide definition from ProteinProphet params so
    // just
    // use a dummy one.
    PeptideDefinition peptideDef = new PeptideDefinition();
    peptideDef.setUseCharge(true);
    peptideDef.setUseMods(true);

    // filtering criteria from the request
    ProteinProphetFilterCriteria filterCriteria_request = filterForm.getFilterCriteria(peptideDef);

    // protein Ids
    List<Integer> proteinIds = null;

    ProteinInferSessionManager sessionManager = ProteinInferSessionManager.getInstance();

    // Check if we already have information in the session
    ProteinProphetFilterCriteria filterCriteria_session =
        sessionManager.getFilterCriteriaForProteinProphet(request, pinferId);
    proteinIds = sessionManager.getStoredProteinIds(request, pinferId);

    // If we don't have a filtering criteria in the session return an error
    if (filterCriteria_session == null || proteinIds == null) {

      log.info("NO information in session for: " + pinferId);
      // redirect to the /viewProteinInferenceResult action if this different from the
      // protein inference ID stored in the session
      log.error("Stale ProteinProphet ID: " + pinferId);
      response.setContentType("text/html");
      response.getWriter().write("STALE_ID");
      return null;
    } else {

      log.info("Found information in session for: " + pinferId);
      System.out.println("stored protein ids: " + proteinIds.size());

      // we will use the sorting column and sorting order from the filter criteria in the session.
      filterCriteria_request.setSortBy(filterCriteria_session.getSortBy());
      filterCriteria_request.setSortOrder(filterCriteria_session.getSortOrder());

      boolean match = matchFilterCriteria(filterCriteria_session, filterCriteria_request);

      // if the filtering criteria has changed we need to filter the results again
      if (!match) {

        log.info("Filtering criteria has changed");

        proteinIds = ProteinProphetResultsLoader.getProteinIds(pinferId, filterCriteria_request);
      }
    }

    long e = System.currentTimeMillis();
    log.info(
        "Got filtered nrseq protein ids for GO Slim analysis in: "
            + TimeUtils.timeElapsedMinutes(s, e)
            + " minutes");

    request.setAttribute("pinferId", pinferId);
    request.setAttribute("goAspect", filterForm.getGoAspect());
    request.setAttribute("goSlimTermId", filterForm.getGoSlimTermId());

    if (filterForm.isGetGoSlimTree()) {

      // We have the protein inference protein IDs; Get the corresponding nrseq protein IDs
      List<Integer> nrseqIds = new ArrayList<Integer>(proteinIds.size());
      ProteinferDAOFactory factory = ProteinferDAOFactory.instance();
      ProteinferProteinDAO protDao = factory.getProteinferProteinDao();
      for (int proteinId : proteinIds) {
        ProteinferProtein protein = protDao.loadProtein(proteinId);
        nrseqIds.add(protein.getNrseqProteinId());
      }
      request.setAttribute("nrseqProteinIds", nrseqIds);

      return mapping.findForward("GoTree");
    } else {

      // We have the protein inference protein IDs; Get the corresponding nrseq protein IDs and
      // protein group IDs
      List<GOAnalysisProtein> goAnalysisProteins =
          new ArrayList<GOAnalysisProtein>(proteinIds.size());
      ProteinferDAOFactory factory = ProteinferDAOFactory.instance();
      ProteinProphetProteinDAO protDao = factory.getProteinProphetProteinDao();
      for (int proteinId : proteinIds) {
        ProteinProphetProtein protein = protDao.loadProtein(proteinId);
        goAnalysisProteins.add(
            new GOAnalysisProtein(protein.getNrseqProteinId(), protein.getGroupId()));
      }

      request.setAttribute("goSlimProteins", goAnalysisProteins);
      request.setAttribute(
          "doGroupAnalysis", true); // default is to get GO information at the group level
      return mapping.findForward("Success");
    }
  }
Ejemplo n.º 2
0
 private boolean matchFilterCriteria(
     ProteinProphetFilterCriteria filterCritSession, ProteinProphetFilterCriteria filterCriteria) {
   return filterCritSession.equals(filterCriteria);
 }