Пример #1
0
void arow::update(
    const common::sfv_t& sfv,
    double alpha,
    double beta) {
  util::concurrent::scoped_wlock lk(storage_->get_lock());
  for (common::sfv_t::const_iterator it = sfv.begin(); it != sfv.end(); ++it) {
    const std::string& feature = it->first;
    double val = it->second;
    storage::feature_val2_t val2;
    storage_->get2_nolock(feature, val2);
    storage::val2_t current_val(0.0, 1.0);
    if (val2.size() > 0) {
      current_val = val2[0].second;
    }

    storage_->set2_nolock(
        feature,
        "+",
        storage::val2_t(current_val.v1 + alpha * current_val.v2 * val,
          current_val.v2 - beta * current_val.v2 * current_val.v2* val * val));
  }
}
Пример #2
0
// load a Protein Data Bank file. Each line corresponds to a single atom
bool ProteinComplex::LoadPDB2(bfs::path filename)
{
	bfs::ifstream infile(filename);
	std::string current_line;

	if(!infile.is_open())
	{
		std::cout << "File not found: " << filename.string() <<"\n";
		return false;
	}

	while (!infile.eof())
	{
		std::getline(infile, current_line);
		if (!infile.eof())
		{
			if(current_line.substr(0, 4) == "ATOM")
				break;
		}
	}

	while (!infile.eof())
	{
		if(current_line.substr(0, 4) == "ATOM")
		{
			AtomData current_atom;

			std::istringstream current_val(current_line.substr(6, 5));
			current_val >> current_atom.atom_num;
			current_val.clear();

			current_val.str(current_line.substr(12, 4));
			current_val >> current_atom.atom_type;
			current_val.clear();

			current_val.str(current_line.substr(17, 3));
			current_val >> current_atom.residue_type;
			current_val.clear();

			current_val.str(current_line.substr(21, 1));
			current_val >> current_atom.chain_id;
			current_val.clear();

			current_val.str(current_line.substr(22, 4));
			current_val >> current_atom.residue_num;
			current_val.clear();

			current_val.str(current_line.substr(30, 8));
			current_val >> current_atom.x_cd;
			current_val.clear();

			current_val.str(current_line.substr(38, 8));
			current_val >> current_atom.y_cd;
			current_val.clear();

			current_val.str(current_line.substr(46, 8));
			current_val >> current_atom.z_cd;
			current_val.clear();

			current_val.str(current_line.substr(54, 6));
			current_val >> current_atom.occupancy;
			current_val.clear();

			current_val.str(current_line.substr(60, 6));
			current_val >> current_atom.temp_factor;
			current_val.clear();

			current_val.str(current_line.substr(76, 2));
			current_val >> current_atom.atom_element;
			current_val.clear();

			InsertAtomData(current_atom);
			std::getline(infile, current_line);
		}
		else