void RunGAMESSDialog::saveGAMESSInput() { QString filename = QFileDialog::getSaveFileName(MainControl::getInstance(0)->getWorkingDir().c_str()); if (filename == "") return; outfile_.open(filename.latin1(), std::ios::out); setParameters_(); outfile_.write(*(MainControl::getInstance(0)->getSelectedSystem())); outfile_.close(); }
void RunGAMESSDialog::accept() { String filename; File::createTemporaryFilename(filename); outfile_.open(filename+".inp", std::ios::out); setParameters_(); outfile_.write(*(MainControl::getInstance(0)->getSelectedSystem())); outfile_.close(); String GAMESSCommand = GAMESSPath->text().latin1(); GAMESSCommand += " " + filename; Log.info() << (String)tr("Executing GAMESS") << std::endl; system(GAMESSCommand.c_str()); Log.info() << (String)tr("Done! ") << std::endl; File::remove(filename+".inp"); DatasetControl::getInstance(0)->addGAMESSData(); }
void QTClusterFinder::run_(const vector<MapType> & input_maps, ConsensusMap & result_map) { num_maps_ = input_maps.size(); if (num_maps_ < 2) { throw Exception::IllegalArgument(__FILE__, __LINE__, __PRETTY_FUNCTION__, "At least two input maps required"); } // set up the distance functor (and set other parameters): DoubleReal max_intensity = input_maps[0].getMaxInt(); DoubleReal max_mz = input_maps[0].getMax()[1]; for (Size map_index = 1; map_index < num_maps_; ++map_index) { max_intensity = max(max_intensity, input_maps[map_index].getMaxInt()); max_mz = max(max_mz, input_maps[map_index].getMax()[0]); } setParameters_(max_intensity, max_mz); // create the hash grid and fill it with features: //cout << "Hashing..." << endl; list<GridFeature> grid_features; Grid grid(Grid::ClusterCenter(max_diff_rt_, max_diff_mz_)); for (Size map_index = 0; map_index < num_maps_; ++map_index) { for (Size feature_index = 0; feature_index < input_maps[map_index].size(); ++feature_index) { grid_features.push_back( GridFeature(input_maps[map_index][feature_index], map_index, feature_index)); GridFeature & gfeature = grid_features.back(); // sort peptide hits once now, instead of multiple times later: BaseFeature & feature = const_cast<BaseFeature &>( grid_features.back().getFeature()); for (vector<PeptideIdentification>::iterator pep_it = feature.getPeptideIdentifications().begin(); pep_it != feature.getPeptideIdentifications().end(); ++pep_it) { pep_it->sort(); } grid.insert(std::make_pair(Grid::ClusterCenter(gfeature.getRT(), gfeature.getMZ()), &gfeature)); } } // compute QT clustering: //cout << "Clustering..." << endl; list<QTCluster> clustering; computeClustering_(grid, clustering); // number of clusters == number of data points: Size size = clustering.size(); // Create a temporary map where we store which GridFeatures are next to which Clusters OpenMSBoost::unordered_map<GridFeature *, std::vector< QTCluster * > > element_mapping; for (list<QTCluster>::iterator it = clustering.begin(); it != clustering.end(); ++it) { OpenMSBoost::unordered_map<Size, GridFeature *> elements; typedef std::multimap<DoubleReal, GridFeature *> InnerNeighborMap; typedef OpenMSBoost::unordered_map<Size, InnerNeighborMap > NeighborMap; NeighborMap neigh = it->getNeighbors(); for (NeighborMap::iterator n_it = neigh.begin(); n_it != neigh.end(); ++n_it) { for (InnerNeighborMap::iterator i_it = n_it->second.begin(); i_it != n_it->second.end(); ++i_it) { element_mapping[i_it->second].push_back( &(*it) ); } } } ProgressLogger logger; logger.setLogType(ProgressLogger::CMD); logger.startProgress(0, size, "linking features"); Size progress = 0; result_map.clear(false); while (!clustering.empty()) { // cout << "Clusters: " << clustering.size() << endl; ConsensusFeature consensus_feature; makeConsensusFeature_(clustering, consensus_feature, element_mapping); if (!clustering.empty()) { result_map.push_back(consensus_feature); } logger.setProgress(progress++); } logger.endProgress(); }