Пример #1
0
  void IDMapper::getIDDetails_(const PeptideIdentification & id, DoubleReal & rt_pep, DoubleList & mz_values, IntList & charges, bool use_avg_mass) const
  {
    mz_values.clear();
    charges.clear();

    rt_pep = id.getMetaValue("RT");

    // collect m/z values of pepId
    if (param_.getValue("mz_reference") == "precursor") // use precursor m/z of pepId
    {
      mz_values.push_back(id.getMetaValue("MZ"));
    }

    for (vector<PeptideHit>::const_iterator hit_it = id.getHits().begin();
         hit_it != id.getHits().end(); ++hit_it)
    {
      Int charge = hit_it->getCharge();
      charges.push_back(charge);

      if (param_.getValue("mz_reference") == "peptide") // use mass of each pepHit (assuming H+ adducts)
      {
        DoubleReal mass = use_avg_mass ?
                          hit_it->getSequence().getAverageWeight(Residue::Full, charge) :
                          hit_it->getSequence().getMonoWeight(Residue::Full, charge);

        mz_values.push_back( mass / (DoubleReal) charge);
      }
    }
  }
Пример #2
0
IntList ParsedEntity::getIntList()
{
	auto pList = getList();
	auto list = *pList;
	IntList retList = MakeIntList();
	for (ParsedEntityPtr pe : list)
	{
		if (pe->getType() == ParsedEntity::Int)
		{
			retList->push_back(pe->getInt());
		}
	}
	return retList;
}
Пример #3
0
bool Init()
{
	int nRandom = 0;
	for (int i = 0; i < g_nMax; ++i)
	{
		nRandom = i;
		g_nSummary += nRandom;
		g_dInts.push_back(nRandom);
		g_hmInts.insert(std::make_pair(nRandom, nRandom));
		g_hsInts.insert(nRandom);
		g_lInts.push_back(nRandom);
		g_mInts.insert(std::make_pair(nRandom, nRandom));
		g_mmInts.insert(std::make_pair(nRandom, nRandom));
		g_msInts.insert(nRandom);
		g_sInts.insert(nRandom);
		g_vInts.push_back(nRandom);
	}
	return true;
}
Пример #4
0
int main()
{
    IntList test;
    
    test.push_front(5);
    test.push_front(2);
    test.push_front(5);
    test.push_front(7);
    test.push_front(5);
    
    cout << "Should display counting down from five: ";
    test.display();
    
    cout << endl;
    
    test.push_back(6);
    
    cout << "Should add zero to the end: ";
    
    test.display();
    
    cout << endl;
    
    //test.insert_sorted(3);
    
    test.select_sort();
    
    cout << "Should be in order now: ";
    
    test.display();
    
    cout << endl;
    
    test.remove_duplicates();
    
    cout << "Should remove all same digits: ";
    
    test.display();
    
    cout << endl;
}
Пример #5
0
// Given a list of lists of possible cage values:
//     [[1,2,3], [3,4,5]]
// Recursively generates tuples of combinations from each of the lists as
// follows:
//   [1,3]
//   [1,4]
//   [1,5]
//   [2,3]
//   [2,4]
// ... etc
// Each of these is checked against the target sum, and pushed into a result
// vector if they match.
// Note: The algorithm assumes that the list of possibles/candidates are
// ordered. This allows it to bail out early if it detects there's no point
// going further.
static void subsetSum(const std::vector<IntList> &possible_lists,
                      const std::size_t p_size, IntList &tuple,
                      unsigned tuple_sum, std::vector<IntList> &subsets,
                      const unsigned target_sum, unsigned list_idx) {
  for (unsigned p = list_idx; p < p_size; ++p) {
    for (auto &poss : possible_lists[p]) {
      // Optimization for small target sums: if the candidate is bigger than
      // the target itself then it can't be valid, neither can any candidate
      // after it (ordered).
      if (target_sum < static_cast<unsigned>(poss)) {
        break;
      }

      // Can't repeat a value inside a cage
      if (std::find(tuple.begin(), tuple.end(), poss) != tuple.end()) {
        continue;
      }

      // Pre-calculate the new tuple values to avoid spurious
      // insertions/deletions to the vector.
      const auto new_tuple_sum = tuple_sum + poss;
      const auto new_tuple_size = tuple.size() + 1;

      // If we've added too much then we can bail out (ordered).
      if (new_tuple_sum > target_sum) {
        break;
      }

      // If there are fewer spots left in the tuple than there are options for
      // the sum to reach the target, bail.
      // TODO: This could be more sophisticated (can't have more than one 1, so
      // it's more like the N-1 sum that it should be greater than.
      if ((p_size - new_tuple_size) > (target_sum - new_tuple_sum)) {
        break;
      }

      if (new_tuple_size == p_size) {
        // If we've reached our target size then we can stop searching other
        // possiblities from this list (ordered).
        if (new_tuple_sum == target_sum) {
          tuple.push_back(poss);
          subsets.push_back(tuple);
          tuple.pop_back();
          break;
        }

        // Else, move on to the next candidate in the list.
        continue;
      }

      tuple_sum += poss;
      tuple.push_back(poss);

      subsetSum(possible_lists, p_size, tuple, tuple_sum, subsets, target_sum,
                p + 1);

      tuple.pop_back();
      tuple_sum -= poss;
    }
  }
}
Пример #6
0
/*----------------------------------------------------------------------- */
SEXP
watershed (SEXP x, SEXP _tolerance, SEXP _ext) {
    SEXP res;
    int im, i, j, nx, ny, nz, ext, nprotect = 0;
    double tolerance;

    nx = INTEGER ( GET_DIM(x) )[0];
    ny = INTEGER ( GET_DIM(x) )[1];
    nz = getNumberOfFrames(x,0);
    tolerance = REAL( _tolerance )[0];
    ext = INTEGER( _ext )[0];

    PROTECT ( res = Rf_duplicate(x) );
    nprotect++;
  
    int * index = new int[ nx * ny ];

    for ( im = 0; im < nz; im++ ) {

        double * src = &( REAL(x)[ im * nx * ny ] );
        double * tgt = &( REAL(res)[ im * nx * ny ] );

        /* generate pixel index and negate the image -- filling wells */
        for ( i = 0; i < nx * ny; i++ ) {
	  tgt[ i ] = -src[ i ];
	  index[ i ] = i;
        }
        /* from R includes R_ext/Utils.h */
        /* will resort tgt as well */
        rsort_with_index( tgt, index, nx * ny );
        /* reassign tgt as it was reset above but keep new index */
        for ( i = 0; i < nx * ny; i++ )
            tgt[ i ] = -src[ i ];

        SeedList seeds;  /* indexes of all seed starting points, i.e. lowest values */

        IntList  equals; /* queue of all pixels on the same gray level */
        IntList  nb;     /* seed values of assigned neighbours */
        int ind, indxy, nbseed, x, y, topseed = 0;
        IntList::iterator it;
        TheSeed newseed;
        PointXY pt;
        bool isin;
        /* loop through the sorted index */
        for ( i = 0; i < nx * ny && src[ index[i] ] > BG; ) {
            /* pool a queue of equally lowest values */
            ind = index[ i ];
            equals.push_back( ind );
            for ( i = i + 1; i < nx * ny; ) {
                if ( src[ index[i] ] != src[ ind ] ) break;
                equals.push_back( index[i] );
                i++;
            }
            while ( !equals.empty() ) {
                /* first check through all the pixels if we can assign them to
                 * existing objects, count checked and reset counter on each assigned
                 * -- exit when counter equals queue length */
                for ( j = 0; j < (int) equals.size(); ) {
		  if ((j%1000)==0) R_CheckUserInterrupt();
                    ind = equals.front();
                    equals.pop_front();
                    /* check neighbours:
                     * - if exists one, assign
                     * - if two or more check what should be combined and assign to the steepest
                     * - if none, push back */
                    /* reset j to 0 every time we assign another pixel to restart the loop */
                    nb.clear();
                    pt = pointFromIndex( ind, nx );
                    /* determine which neighbour we have, push them to nb */
                    for ( x = pt.x - ext; x <= pt.x + ext; x++ )
                        for ( y = pt.y - ext; y <= pt.y + ext; y++ ) {
                            if ( x < 0 || y < 0 || x >= nx || y >= ny || (x == pt.x && y == pt.y) ) continue;
                            indxy = x + y * nx;
                            nbseed = (int) tgt[ indxy ];
                            if ( nbseed < 1 ) continue;
                            isin = false;
                            for ( it = nb.begin(); it != nb.end() && !isin; it++ )
                                if ( nbseed == *it ) isin = true;
                            if ( !isin ) nb.push_back( nbseed );
                        }
                    if ( nb.size() == 0 ) {
                        /* push the pixel back and continue with the next one */
                        equals.push_back( ind );
                        j++;
                        continue;
                    }
                    tgt[ ind ] = check_multiple(tgt, src, ind, nb, seeds, tolerance, nx, ny );
                    /* we assigned the pixel, reset j to restart neighbours detection */
                    j = 0;
                }
                /* now we have assigned all that we could */
                if ( !equals.empty() ) {
                    /* create a new seed for one pixel only and go back to assigning neighbours */
                    topseed++;
                    newseed.index = equals.front();
                    newseed.seed = topseed;
                    equals.pop_front();
                    tgt[ newseed.index ] = topseed;
                    seeds.push_back( newseed );
                }
            } // assigning equals
        } // sorted index

        /* now we need to reassign indexes while some seeds could be removed */
        double * finseed = new double[ topseed ];
        for ( i = 0; i < topseed; i++ )
            finseed[ i ] = 0;
        i = 0;
        while ( !seeds.empty() ) {
            newseed = seeds.front();
            seeds.pop_front();
            finseed[ newseed.seed - 1 ] = i + 1;
            i++;
        }
        for ( i = 0; i < nx * ny; i++ ) {
            j = (int) tgt[ i ];
            if ( 0 < j && j <= topseed )
                tgt[ i ] = finseed[ j - 1 ];
        }
        delete[] finseed;

    } // loop through images

    delete[] index;

    UNPROTECT (nprotect);
    return res;
}
Пример #7
0
	TestList()
	{
		typedef List<char, DebugAllocator<int> > IntList;

		IntList a;
		a.push_back('1');
		a.push_back('2');
		a.push_back('3');
		LIST_ASSERT(*a.begin() == '1');
		LIST_ASSERT(*++a.begin() == '2');
		LIST_ASSERT(*++++a.begin() == '3');
		LIST_ASSERT(++++++a.begin() == a.end());

		IntList b;
		b.push_back('a');
		b.push_back('b');
		b.push_back('c');
		LIST_ASSERT(*b.begin() == 'a');
		LIST_ASSERT(*++b.begin() == 'b');
		LIST_ASSERT(*++++b.begin() == 'c');
		LIST_ASSERT(++++++b.begin() == b.end());

		// swap full lists
		a.swap(b);
		LIST_ASSERT(*a.begin() == 'a');
		LIST_ASSERT(*++a.begin() == 'b');
		LIST_ASSERT(*++++a.begin() == 'c');
		LIST_ASSERT(++++++a.begin() == a.end());
		LIST_ASSERT(*b.begin() == '1');
		LIST_ASSERT(*++b.begin() == '2');
		LIST_ASSERT(*++++b.begin() == '3');
		LIST_ASSERT(++++++b.begin() == b.end());

		// swap to/from empty list
		IntList c;
		c.swap(b);
		LIST_ASSERT(b.empty());
		LIST_ASSERT(*c.begin() == '1');
		LIST_ASSERT(*++c.begin() == '2');
		LIST_ASSERT(*++++c.begin() == '3');
		LIST_ASSERT(++++++c.begin() == c.end());

		c.swap(b);
		LIST_ASSERT(c.empty());
		LIST_ASSERT(*b.begin() == '1');
		LIST_ASSERT(*++b.begin() == '2');
		LIST_ASSERT(*++++b.begin() == '3');
		LIST_ASSERT(++++++b.begin() == b.end());

		IntList d;
		c.swap(d);
		LIST_ASSERT(c.empty());
		LIST_ASSERT(d.empty());

		c.splice(c.end(), d);
		LIST_ASSERT(c.empty());
		LIST_ASSERT(d.empty());

		// splice full with empty
		b.splice(b.end(), c);
		LIST_ASSERT(c.empty());
		LIST_ASSERT(*b.begin() == '1');
		LIST_ASSERT(*++b.begin() == '2');
		LIST_ASSERT(*++++b.begin() == '3');
		LIST_ASSERT(++++++b.begin() == b.end());

		// splice empty with full
		c.splice(c.end(), b);
		LIST_ASSERT(b.empty());
		LIST_ASSERT(*c.begin() == '1');
		LIST_ASSERT(*++c.begin() == '2');
		LIST_ASSERT(*++++c.begin() == '3');
		LIST_ASSERT(++++++c.begin() == c.end());

		// splice full with full
		c.splice(c.end(), a);
		LIST_ASSERT(a.empty());
		LIST_ASSERT(*c.begin() == '1');
		LIST_ASSERT(*++c.begin() == '2');
		LIST_ASSERT(*++++c.begin() == '3');
		LIST_ASSERT(*++++++c.begin() == 'a');
		LIST_ASSERT(*++++++++c.begin() == 'b');
		LIST_ASSERT(*++++++++++c.begin() == 'c');
		LIST_ASSERT(++++++++++++c.begin() == c.end());


		c.pop_back();
		LIST_ASSERT(!c.empty());
		c.pop_back();
		LIST_ASSERT(!c.empty());
		c.pop_back();
		LIST_ASSERT(!c.empty());
		c.pop_back();
		LIST_ASSERT(!c.empty());
		c.pop_back();
		LIST_ASSERT(!c.empty());
		c.pop_back();
		LIST_ASSERT(c.empty());
	}
Пример #8
0
int main()
{
    IntList temp;
    temp.display();
    cout << endl;
    temp.push_front(5);
    temp.display();
    cout << endl;
    temp.push_front(15);
    temp.push_front(45);
    temp.display();
    cout << endl;
    temp.pop_front();
    temp.display();
    cout << endl;

    temp.push_back(32);
    temp.display();
    cout << endl;

    IntList temp2;
    temp2.push_back(32);
    temp2.display();
    cout << endl;
    temp2.push_back(45);
    temp2.display();
    cout << endl;

    temp.select_sort();
    temp.display();
    cout << endl;

    IntList temp3;
    temp3.select_sort();
    temp3.display();
    cout << endl;

    temp.display();
    cout << endl;
    temp.insert_sorted(10);
    temp.display();
    cout << endl;
    temp.insert_sorted(33);
    temp.display();
    cout << endl;
    temp.insert_sorted(4);
    temp.display();
    cout << endl;
    temp.insert_sorted(2);
    temp.display();
    cout << endl;

    IntList temp4;
    temp4.push_back(249);
    temp4.push_back(346);
    temp4.push_back(366);
    temp4.push_back(374);
    temp4.push_back(462);
    temp4.push_back(484);
    temp4.push_back(600);
    temp4.push_back(686);
    temp4.push_back(715);
    temp4.push_back(799);
    temp4.push_back(949);
    temp4.display();
    cout << endl;
    temp4.insert_sorted(800);
    temp4.display();
    cout << endl;

    IntList temp5;
    temp5.push_back(249);
    temp5.push_back(346);
    temp5.push_back(715);
    temp5.push_back(799);
    temp5.push_back(949);
    temp5.push_back(949);
    temp5.push_back(366);
    temp5.push_back(374);
    temp5.push_back(462);
    temp5.push_back(462);
    temp5.push_back(484);
    temp5.push_back(600);
    temp5.push_back(249);
    temp5.push_back(686);
    temp5.display();
    cout << endl;
    temp5.select_sort();
    temp5.display();
    cout << endl;

    temp5.remove_duplicates();
    temp5.display();
    cout << endl;

    IntList temp6;
    temp6.push_back(667);
    temp6.push_back(314);
    temp6.push_back(895);
    temp6.push_back(63);
    temp6.push_back(462);
    temp6.display();
    cout << endl;
    temp6.remove_duplicates();
    temp6.display();
    cout << endl;

    cout << "End" << endl;
}
Пример #9
0
int main()
{
  IntList theList;
  IntList theOtherList;
  IntList theFinalList;
  
  theList.display();
  cout << endl;

  theList.push_front(133);
  theList.display();
  cout << endl;
  
  theList.push_front(250);
  theList.display();
  cout << endl;

  theList.push_front(550);
  theList.display();
  cout << endl;
  
  theList.pop_front();
  theList.display();
  cout << endl;
  
  theList.push_back(13);
  theList.display();
  cout << endl;
  
  theList.select_sort();
  theList.display();
  cout << endl;
  
  theList.insert_sorted(10);
  theList.display();
  cout << endl;
  
  theList.insert_sorted(225);
  theList.display();
  cout << endl;
  
  theList.pop_front();
  theList.display();
  cout << endl;
  
  theList.pop_front();
  theList.display();
  cout << endl;
  
  theList.pop_front();
  theList.display();
  cout << endl;
  
  theList.push_back(45);
  theList.display();
  cout << endl;
  
  cout << "The other list shit:\n";
  
  theOtherList.insert_sorted(225);
  theOtherList.display();
  cout << endl;
  
  theOtherList.insert_sorted(12);
  theOtherList.display();
  cout << endl;
  
  theOtherList.insert_sorted(13);
  theOtherList.display();
  cout << endl;
  
  theOtherList.insert_sorted(13);
  theOtherList.display();
  cout << endl;
  
  theOtherList.insert_sorted(12);
  theOtherList.display();
  cout << endl;
  
  theOtherList.insert_sorted(5000);
  theOtherList.display();
  cout << endl;
  
  theOtherList.remove_duplicates();
  theOtherList.display();
  cout << endl;


  cout << "The other list shit:\n";
  
  theFinalList.push_front(10);
  theFinalList.display();
  cout << endl;
  
  theFinalList.push_front(10);
  theFinalList.display();
  cout << endl;
  
  theFinalList.push_front(30);
  theFinalList.display();
  cout << endl;
  
  theFinalList.push_front(5);
  theFinalList.display();
  cout << endl;
  
  theFinalList.push_front(20);
  theFinalList.display();
  cout << endl;
  
  theFinalList.push_front(10);
  theFinalList.display();
  cout << endl;
  
  theFinalList.push_back(30);
  theFinalList.display();
  cout << endl;
  
  theFinalList.remove_duplicates();
  theFinalList.display();
  cout << endl;
  
  return 0;
}
Пример #10
0
int main()
{
   IntList a;
   IntList b;
   
   string divider = string(68, '-');
   
   cout << divider << endl;
   
   // testing push_front function
   a.push_front(1);
   a.push_front(4);
   a.push_front(412);
   
   // tests display
   cout << "IntList 1: testing push_front function" << endl;
   cout << "(should display 412 4 1): ";
   a.display(); cout << endl;
   
   cout << "IntList 2: testing empty list" << endl;
   cout << "(should display nothing): ";
   b.display(); cout << endl;
   
   cout << divider << endl;
   
   // tests pop_front;
   a.pop_front();
   cout << "IntList 1: testing pop_front function" << endl;
   cout << "(should display 4 1): ";
   a.display(); cout << endl;
   
   cout << "IntList 2: testing pop_front on empty" << endl;
   cout << "(should do nothing): ";
   b.pop_front();
   b.display(); cout << endl;
   
   b.push_front(4);
   cout << "IntList 2: testing pop_front on 1 element" << endl;
   cout << "(should see nothing): ";
   b.pop_front();
   b.display(); cout << endl;
   
   cout << divider << endl;
   
   a.push_back(3);
   a.push_back(213);
   a.push_back(61);
   
   // testing select_sort
   cout << "IntList 1: testing select_sort function" << endl;
   cout << "(should display 1 3 4 61 213): ";
   a.select_sort();
   a.display(); cout << endl;
   cout << "IntList 2: testing empty list" << endl;
   b.select_sort();
   b.display(); cout << endl;
   
   cout << divider << endl;
   
   // testing insert_sorted()
   
   cout << "IntList 1: testing insert_sorted function" << endl;
   cout << "(should display 1 2 3 4 61 213 400): ";
   a.insert_sorted(2);
   a.insert_sorted(400);
   a.display(); cout << endl;
   
   cout << "IntList 2: testing_sorted on empty list" << endl;
   cout << "(should display 4): ";
   b.insert_sorted(4);
   b.display(); cout << endl;
   
   cout << divider << endl;
   return 0;
}