Changeset 4363


Ignore:
Timestamp:
Oct 24, 2012, 9:50:26 AM (10 years ago)
Author:
Fredrik Levander
Message:

Fixes #773. Optimisation of iteration when combining.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugin/src/org/proteios/plugins/CombinedHitsReport.java

    r4362 r4363  
    2828package org.proteios.plugins;
    2929
     30import org.hibernate.context.CurrentSessionContext;
    3031import org.proteios.core.BaseException;
    3132import org.proteios.core.DbControl;
     
    408409        log.info("CombinedHitsReport Query result size:" + queryhits);
    409410        output.write(", total hits to consider: " + queryhits + "\n");
     411        Comparator<Hit> hitSorter = new HitFileAndSpectrumStringIdAndDescriptionSortForHit();
    410412        if (!proteins && localSampleId != null)
    411413        {
    412           Comparator<Hit> hitSorter = new HitFileAndSpectrumStringIdAndDescriptionSortForHit();
    413414          Collections.sort(hitlist, hitSorter);
    414415        }
    415 
     416        hitSorter = new HitFileAndSpectrumStringIdSortForHit();
    416417        Iterator<Hit> hitit = hitlist.iterator();
    417418        boolean first = true;
     
    548549                Integer currentFileId = currenthit
    549550                  .getPeakListFile().getId();
    550                 // log.debug("File ID:" + currentFileId + " spectrum: " + currenthit.getSpectrumStringId() + " description: " + currenthit.getDescription());
     551                // log.debug("File ID:" + currentFileId +
     552                // " spectrum: " +
     553                // currenthit.getSpectrumStringId() +
     554                // " description: " +
     555                // currenthit.getDescription());
    551556                // If there is a sample id we sort on input
    552557                // filename
     
    557562                    for (int j = last_index; j < forwardSize; j++)
    558563                    {
    559                       if (currenthit
    560                         .getSpectrumStringId().equals(
    561                           combinedHits.get(j).hit
    562                             .getSpectrumStringId()) && currentFileId
    563                         .equals(combinedHits.get(j).hitPeakListFileId) && combinedHits
     564                      if (hitSorter.compare(currenthit,
     565                        combinedHits.get(j).hit) == 0 && combinedHits
    564566                        .get(j).hit.getDescription()
    565567                        .startsWith(seqstart))
     
    569571                          .get(j);
    570572                        last_index = j;
     573                        break;
     574                      }
     575                      else if (hitSorter.compare(
     576                        currenthit,
     577                        combinedHits.get(j).hit) < 0)
     578                      {
    571579                        break;
    572580                      }
     
    613621                  {
    614622                    for (int j = last_rev_index; j < reverseSize; j++)
    615 
    616623                    {
    617                       if (currenthit
    618                         .getSpectrumStringId().equals(
    619                           revCombinedHits.get(j).hit
    620                             .getSpectrumStringId()) && currentFileId
    621                         .equals(revCombinedHits.get(j).hitPeakListFileId) && revCombinedHits
     624                      if (hitSorter.compare(currenthit,
     625                        revCombinedHits.get(j).hit) == 0 && revCombinedHits
    622626                        .get(j).hit.getDescription()
    623627                        .startsWith(seqstart))
     
    627631                          .get(j);
    628632                        last_rev_index = j;
     633                        break;
     634                      }
     635                      else if (hitSorter.compare(
     636                        currenthit,
     637                        revCombinedHits.get(j).hit) < 0)
     638                      {
    629639                        break;
    630640                      }
     
    700710      // Set dummy scores
    701711      float[][] combScores = new float[combinedHits.size()][score_types.length];
    702       int index=0;
     712      int index = 0;
    703713      for (CombinedHit ch : combinedHits)
    704714      {
     
    716726            }
    717727          }
    718           combScores[index][i]=ch.scores[i];
     728          combScores[index][i] = ch.scores[i];
    719729        }
    720730        index++;
    721731      }
    722732      float[][] revScores = new float[revCombinedHits.size()][score_types.length];
    723       index=0;
     733      index = 0;
    724734      for (CombinedHit ch : revCombinedHits)
    725735      {
     
    737747            }
    738748          }
    739           revScores[index][i]=ch.scores[i];
     749          revScores[index][i] = ch.scores[i];
    740750        }
    741751        index++;
     
    961971
    962972
    963   private void countBetterRandomHits(List<CombinedHit> combinedHits, float[][] combScores,
    964       float[][] revScores)
     973  private void countBetterRandomHits(List<CombinedHit> combinedHits,
     974      float[][] combScores, float[][] revScores)
    965975  {
    966976    int combinedHitsSize = combinedHits.size();
     
    973983       * Count how many reverse hits that have better score of any type.
    974984       * If the reverse hit has all the score types that the forward hit
    975        * has, and all of them are above those of the forward hit, it should
    976        * be counted.
     985       * has, and all of them are above those of the forward hit, it
     986       * should be counted.
    977987       */
    978988      for (int j = 0; j < revCombinedHitsSize; j++)
     
    983993          if (compareE[k])
    984994          {
    985             if (revScores[j][k]>combScores[i][k]) above=false;
     995            if (revScores[j][k] > combScores[i][k])
     996              above = false;
    986997          }
    987998          else
    988999          {
    989             if (revScores[j][k]<combScores[i][k]) above=false;
     1000            if (revScores[j][k] < combScores[i][k])
     1001              above = false;
    9901002          }
    9911003        }
     
    9981010      if (i % 10000 == 0)
    9991011      {
    1000         log.debug("Counting ..."+i);
     1012        log.debug("Counting ..." + i);
    10011013      }
    10021014    }
     
    12511263  }
    12521264
     1265  public class HitFileAndSpectrumStringIdSortForHit
     1266      implements Comparator<Hit>
     1267  {
     1268    public int compare(Hit o1, Hit o2)
     1269    {
     1270      if (Integer.valueOf(o1.getPeakListFile().getId()).equals(
     1271        o2.getPeakListFile().getId()))
     1272      {
     1273        return o1.getSpectrumStringId().compareTo(
     1274          o2.getSpectrumStringId());
     1275
     1276      }
     1277      else
     1278        return (Integer.valueOf(o1.getPeakListFile().getId())
     1279          .compareTo(o2.getPeakListFile().getId()));
     1280    }
     1281  }
    12531282}
Note: See TracChangeset for help on using the changeset viewer.