virtual void read(const string& filename, const string& head, MSData& result, int runIndex = 0) const { if (runIndex != 0) throw ReaderFail("[Reader_BTDX::read] multiple runs not supported"); shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_BTDX::read] Unable to open file " + filename)); result.fileDescription.fileContent.set(MS_MSn_spectrum); result.fileDescription.fileContent.set(MS_centroid_spectrum); SourceFilePtr sourceFile(new SourceFile); sourceFile->id = "BTDX1"; bfs::path p(filename); sourceFile->name = p.leaf(); string location = bfs::complete(p.branch_path()).string(); if (location.empty()) location = "."; sourceFile->location = string("file:///") + location; result.fileDescription.sourceFilePtrs.push_back(sourceFile); result.id = result.run.id = bfs::basename(filename); result.run.spectrumListPtr = SpectrumListPtr(SpectrumList_BTDX::create(is, result)); result.run.chromatogramListPtr = ChromatogramListPtr(new ChromatogramListSimple); return; }
virtual void read(const string& filename, const string& head, MSData& result, int runIndex = 0) const { if (runIndex != 0) throw ReaderFail("[Reader_MSn::read] multiple runs not supported"); MSn_Type filetype = MSn_Type_UNKNOWN; if( (bal::to_lower_copy(bfs::extension(filename)) == ".ms2" )){ filetype = MSn_Type_MS2; }else if( (bal::to_lower_copy(bfs::extension(filename)) == ".cms2" )){ filetype = MSn_Type_CMS2; }else if( (bal::to_lower_copy(bfs::extension(filename)) == ".bms2" )){ filetype = MSn_Type_BMS2; } shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_MSn::read] Unable to open file " + filename)); Serializer_MSn serializer(filetype); serializer.read(is, result); fillInCommonMetadata(filename, result); result.fileDescription.sourceFilePtrs.back()->set(MS_scan_number_only_nativeID_format); result.fileDescription.sourceFilePtrs.back()->set(MS_MS2_file); return; }
virtual void read(const std::string& filename, const std::string& head, MSData& result, int runsIndex = 0) const { if (runsIndex != 0) throw ReaderFail("[Reader_mzXML::read] multiple runs not supported"); shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_mzXML::read] Unable to open file " + filename).c_str()); try { // assume there is a scan index Serializer_mzXML serializer; serializer.read(is, result); fillInCommonMetadata(filename, result); result.fileDescription.sourceFilePtrs.back()->set(MS_scan_number_only_nativeID_format); result.fileDescription.sourceFilePtrs.back()->set(MS_ISB_mzXML_file); return; } catch (SpectrumList_mzXML::index_not_found&) {} // error looking for index -- try again, but generate index is->seekg(0); Serializer_mzXML::Config config; config.indexed = false; Serializer_mzXML serializer(config); serializer.read(is, result); fillInCommonMetadata(filename, result); result.fileDescription.sourceFilePtrs.back()->set(MS_scan_number_only_nativeID_format); result.fileDescription.sourceFilePtrs.back()->set(MS_ISB_mzXML_file); return; }
virtual void read(const std::string& filename, const std::string& head, MSData& result, int runIndex = 0) const { if (runIndex != 0) throw ReaderFail("[Reader_mzML::read] multiple runs not supported"); shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_mzML::read] Unable to open file " + filename).c_str()); switch (type(*is)) { case Type_mzML: { Serializer_mzML::Config config; config.indexed = false; Serializer_mzML serializer(config); serializer.read(is, result); break; } case Type_mzML_Indexed: { Serializer_mzML serializer; serializer.read(is, result); break; } case Type_Unknown: default: { throw runtime_error("[MSDataFile::Reader_mzML] This isn't happening."); } } fillInCommonMetadata(filename, result); }
virtual void read(const std::string& filename, const std::string& head, TraData& result, int documentIndex = 0) const { if (documentIndex != 0) throw ReaderFail("[Reader_traML::read] multiple documents not supported"); shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_traML::read] Unable to open file " + filename).c_str()); switch (type(*is)) { case Type_traML: { Serializer_traML serializer; serializer.read(is, result); break; } case Type_Unknown: default: { throw runtime_error("[Reader_traML::read] This isn't happening."); } } fillInCommonMetadata(filename, result); }
PWIZ_API_DECL void Reader_Agilent::read(const string& filename, const string& head, MSData& result, int sampleIndex /* = 0 */, const Config& config) const { throw ReaderFail("[Reader_Agilent::read()] Agilent MassHunter reader not implemented: " #ifdef _MSC_VER // should be possible, apparently somebody decided to skip it "support was explicitly disabled when program was built" #elif defined(WIN32) // wrong compiler "program was built without COM support and cannot access Agilent DLLs - try building with MSVC instead of GCC" #else // wrong platform "Agilent DLLs only work on Windows" #endif ); }
virtual void read(const string& filename, const string& head, MSData& result, int runIndex = 0) const { if (runIndex != 0) throw ReaderFail("[Reader_MGF::read] multiple runs not supported"); shared_ptr<istream> is(new pwiz::util::random_access_compressed_ifstream(filename.c_str())); if (!is.get() || !*is) throw runtime_error(("[Reader_MGF::read] Unable to open file " + filename)); Serializer_MGF serializer; serializer.read(is, result); fillInCommonMetadata(filename, result); result.fileDescription.sourceFilePtrs.back()->set(MS_multiple_peak_list_nativeID_format); result.fileDescription.sourceFilePtrs.back()->set(MS_Mascot_MGF_file); return; }
PWIZ_API_DECL void Reader_ABI_T2D::read(const string& filename, const string& head, MSData& result, int runIndex, const Config& config) const { if (runIndex != 0) throw ReaderFail("[Reader_ABI_T2D::read] multiple runs not supported"); DataPtr t2d_data = Data::create(filename); fillInSources(filename, result, t2d_data); SpectrumList_ABI_T2D* sl = new SpectrumList_ABI_T2D(result, t2d_data); result.run.spectrumListPtr = SpectrumListPtr(sl); fillInMetadata(filename, result, t2d_data); }